24 Sep, 2009

3 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:
    lguest: don't force VIRTIO_F_NOTIFY_ON_EMPTY
    lguest: cleanup for map_switcher()
    lguest: use PGDIR_SHIFT for PAE code to allow different PAGE_OFFSET
    lguest: use set_pte/set_pmd uniformly for real page table entries
    lguest: move panic notifier registration to its expected place.
    virtio_blk: add support for cache flush
    virtio: add virtio IDs file
    virtio: get rid of redundant VIRTIO_ID_9P definition
    virtio: make add_buf return capacity remaining
    virtio_pci: minor MSI-X cleanups

    Linus Torvalds
     
  • My 58fa879e1e640a1856f736b418984ebeccee1c95 "mm: FOLL flags for GUP flags"
    broke CONFIG_NOMMU build by forgetting to update nommu.c foll_flags type:

    mm/nommu.c:171: error: conflicting types for `__get_user_pages'
    mm/internal.h:254: error: previous declaration of `__get_user_pages' was here
    make[1]: *** [mm/nommu.o] Error 1

    My 03f6462a3ae78f36eb1f0ee8b4d5ae2f7859c1d5 "mm: move highest_memmap_pfn"
    broke CONFIG_NOMMU build by forgetting to add a nommu.c highest_memmap_pfn:

    mm/built-in.o: In function `memmap_init_zone':
    (.meminit.text+0x326): undefined reference to `highest_memmap_pfn'
    mm/built-in.o: In function `memmap_init_zone':
    (.meminit.text+0x32d): undefined reference to `highest_memmap_pfn'

    Fix both breakages, and give myself 30 lashes (ouch!)

    Reported-by: Michal Simek
    Signed-off-by: Hugh Dickins
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • For this system call user space passes a signed long length parameter,
    while the kernel side takes an unsigned long parameter and converts it
    later to signed long again.

    This has led to bugs in compat wrappers see e.g. dd90bbd5 "powerpc: Add
    compat_sys_truncate". The s390 compat wrapper for this functions is
    broken as well since it also performs zero extension instead of sign
    extension for the length parameter.

    In addition if hpa comes up with an automated way of generating
    compat wrappers it would generate a wrong one here.

    So change the length parameter from unsigned long to long.

    Cc: "H. Peter Anvin"
    Cc: Al Viro
    Cc: Christoph Hellwig
    Signed-off-by: Heiko Carstens
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     

23 Sep, 2009

37 commits

  • * 'for-linus' of git://gitserver.sunplusct.com/linux-2.6-score:
    score: update email address in MAINTAINERS.
    score: Cleanup linker script using new macros.
    score: Make THREAD_SIZE available to assembly files.
    score: Make PAGE_SIZE available to assembly.

    Linus Torvalds
     
  • * 'x86/orig_ax' of git://git.kernel.org/pub/scm/linux/kernel/git/frob/linux-2.6-roland:
    x86: ptrace: set TS_COMPAT when 32-bit ptrace sets orig_eax>=0
    x86: ptrace: do not sign-extend orig_ax on write
    x86: syscall_get_nr returns int
    asm-generic: syscall_get_nr returns int

    Linus Torvalds
     
  • bitfields should be unsigned.

    This fixes sparse noise:
    error: dubious one-bit signed bitfield

    Signed-off-by: H Hartley Sweeten
    Cc: Jan Kara
    Cc: Theodore Ts'o
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    H Hartley Sweeten
     
  • Unlike on most other architectures ino_t is an unsigned int on s390. So
    add an explicit cast to avoid this compile warning:

    fs/ext2/namei.c: In function 'ext2_lookup':
    fs/ext2/namei.c:73: warning: format '%lu' expects type 'long unsigned int', but argument 4 has type 'ino_t'

    Signed-off-by: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Heiko Carstens
     
  • There are a few places in the Minix FS code where the "inode" field of a
    minix_dir_entry is used without checking first to see if the dirent is
    really a minix3_dir_entry. The inode number in a V1/V2 dirent is 16 bits,
    whereas that in a V3 dirent is 32 bits.

    Accessing it as a 16 bit field when it really should be accessed as a 32
    bit field probably kinda sorta works on a little-endian machine, but leads
    to some rather odd behaviour on big-endian machines.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Doug Graham
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Doug Graham
     
  • The patch enables the driver to be used on platforms such as ARM where an
    I/O address is a 32-bit memory address.

    The patch avoids the following kernel oops:

    debian:~# modprobe sisfb
    [ 73.070000] sisfb: Video ROM found
    [ 73.080000] sisfb: Video RAM at 0x80000000, mapped to 0xe0a00000, size 1024k
    [ 73.090000] sisfb: MMIO at 0x84080000, mapped to 0xe0b80000, size 256k
    [ 73.090000] sisfb: Memory heap starting at 800K, size 32K
    [ 73.360000] Unable to handle kernel paging request at virtual address 6e000844
    [ 73.380000] pgd = df230000
    [ 73.380000] [6e000844] *pgd=00000000
    [ 73.380000] Internal error: Oops: 8f5 [#1]
    [ 73.380000] Modules linked in: sisfb(+) fb cfbcopyarea cfbimgblt cfbfillrect
    [ 73.380000] CPU: 0 Not tainted (2.6.31-iop32x #1)
    [ 73.380000] PC is at SiS_SetRegANDOR+0x10/0x38 [sisfb]
    [ 73.380000] LR is at SiS_SetSCLKHigh+0x38/0x94 [sisfb]
    [ 73.380000] pc : [] lr : [] psr: 60000013
    [ 73.380000] sp : df38fd00 ip : 6e000000 fp : 00000002
    [ 73.380000] r10: 00000108 r9 : 00000000 r8 : 00000108
    [ 73.380000] r7 : df064258 r6 : 00000110 r5 : 6e000844 r4 : 0000010a
    [ 73.380000] r3 : 00000001 r2 : 0000000e r1 : 00000011 r0 : 00000844
    [ 73.380000] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
    [ 73.380000] Control: 0000397f Table: bf230000 DAC: 00000015
    [ 73.380000] Process modprobe (pid: 1849, stack limit = 0xdf38e270)
    [ 73.380000] Stack: (0xdf38fd00 to 0xdf390000)
    [ 73.380000] fd00: 0000010a 00000108 df064258 df064258 df064258 00000000 00000000 bf02c4e0
    [ 73.380000] fd20: 00000114 bf02c50c 00000013 00000114 0000010a df064258 00000000 bf02c980
    [ 73.380000] fd40: 00009c66 00000004 00000001 df064250 a0010000 a6a2a0a0 df064250 00000003
    [ 73.380000] fd60: df064250 00000000 df064258 0000fffd 00000000 00000000 00000000 bf033948
    [ 73.380000] fd80: 00000000 00000000 00000000 bf019e2c 00000000 df064a70 bf03b470 00010000
    [ 73.380000] fda0: 00000000 df064250 00000000 df831c00 00000012 bf039f70 00000000 c00abed8
    [ 73.380000] fdc0: 000008a6 000008a4 df0649b0 df064878 df064258 df064000 00000000 00000000
    [ 73.380000] fde0: 00000001 00008000 00000001 00030000 df81c930 bf049f88 df831c00 00000000
    [ 73.380000] fe00: bf049f58 df3952a0 c0447708 bf049f88 bf049fe0 c0191980 df831c00 c0191b10
    [ 73.380000] fe20: df831c58 bf049f58 df831c00 bf04aca8 df3952a0 df831c58 df831c58 bf049f88
    [ 73.380000] fe40: c01ba1b4 c01ba0a0 df831c58 df831c8c bf049f88 c01ba1b4 df3952a0 00000000
    [ 73.380000] fe60: c03e265c c01ba240 00000000 df38fe78 bf049f88 c01b990c df812938 df81b8d0
    [ 73.380000] fe80: df3952a0 df807780 00000000 00000060 bf049f88 c01b9224 bf0429c8 00000000
    [ 73.380000] fea0: bf049f58 00000000 bf049f88 00000000 00000000 bf04aea8 00000000 c01ba4e4
    [ 73.380000] fec0: e09861a0 bf049f58 00000000 bf049f88 00000000 c0191f20 00000000 00000000
    [ 73.380000] fee0: c03f7bac bf04d418 0000fff2 0000fff1 bf04ad08 0002f260 0002f260 e0986038
    [ 73.380000] ff00: e0986150 e098568b df143340 e0990280 00000036 c03d8b00 fffffffd 00000000
    [ 73.380000] ff20: bf04acfc 00000000 fffffffc 0003cf4b 00018098 c03f7bac 00000000 bf04d000
    [ 73.380000] ff40: df38e000 00000000 bedc0984 c00272a4 ffffffff c005bc88 00000000 00000000
    [ 73.380000] ff60: 0003cf4b 0003cf4b 00018098 bf04acfc 00000000 c0027fe8 df38e000 00000000
    [ 73.380000] ff80: bedc0984 c006882c 00001000 00000003 00000000 00009064 00000000 00008edc
    [ 73.380000] ffa0: 00000080 c0027e20 00009064 00000000 4014e000 0003cf4b 00018098 0003cf4b
    [ 73.380000] ffc0: 00009064 00000000 00008edc 00000080 00000000 00000000 40025000 bedc0984
    [ 73.380000] ffe0: 00000000 bedc08fc 0000b6b0 400e8f34 60000010 4014e000 00000000 00000000
    [ 73.380000] [] (SiS_SetRegANDOR+0x10/0x38 [sisfb]) from [] (0xdf064258)
    [ 73.380000] Code: e92d0030 e20110ff e280546e e3a0c46e (e5c51000)
    [ 73.680000] ---[ end trace 62a93e01df37a5f2 ]---

    Signed-off-by: Aaro Koskinen
    Cc: Thomas Winischhofer
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Aaro Koskinen
     
  • Fixes `s3c_fb_remove' referenced in section `.data' of
    drivers/built-in.o: defined in discarded section `.devexit.text' of
    drivers/built-in.o

    With CONFIG_HOTPLUG=n, functions marked with __devexit gets removed,
    so make sure we use __devexit_p when referencing pointers to them.

    Signed-off-by: Peter Korsgaard
    Acked-by: Ben Dooks
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Korsgaard
     
  • drivers/video/tmiofb.c: In function 'tmiofb_resume':
    drivers/video/tmiofb.c:977: warning: 'retval' may be used uninitialized in this function

    Acked-by: Dmitry Eremin-Solenikov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • fbcon makes the (reasonable) assumption that it only needs to program the
    hardware once, when fbcon_init() is called for the foreground console.

    This doesn't always play well with vgacon because vgacon_deinit() is only
    doing its job when the last console it owns is closed (when switching from
    vgacon to fbcon, that's usually *after* fbcon_init() has set the new
    mode).

    Depending on the hardware this can cause the wrong framebuffer location to
    be scanned out (e.g. reproduced on nv05 with the nouveau framebuffer
    driver).

    Signed-off-by: Francisco Jerez
    Cc: "H. Peter Anvin"
    Cc: Alan Cox
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Francisco Jerez
     
  • Attempting to unload a framebuffer module calls unregister_framebuffer()
    which in turn gets fbcon to release it. If fbcon has no framebuffers
    linked to a console, it will also unbind itself from the console driver.
    However, if fbcon never registered itself as a console driver, the unbind
    will fail causing the framebuffer device entry to persist. In most cases
    this failure will result in an oops when attempting to access the now
    non-existent device.

    This patch ensures that the fbcon unbind request will succeed even if a
    bind was never done. It tracks if a successful bind ever occurred & will
    only attempt to unbind if needed. If there never was a bind, it simply
    returns with no error.

    Signed-off-by: Ian Armstrong
    Cc: Krzysztof Helt
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Armstrong
     
  • CONFIG_FB_MATROX_32MB is always enabled, so there is no point in having
    ifdefs all around. And it is bad practice to use CONFIG_* as a name for
    something which is not a Kconfig option.

    Signed-off-by: Jean Delvare
    Acked-by: Petr Vandrovec
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • With multihead support always enabled, macros MINFO_FROM and
    MINFO_FROM_INFO are no longer needed and make the code harder to read.

    Signed-off-by: Jean Delvare
    Acked-by: Petr Vandrovec
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • With multihead support always enabled, these macros are no longer needed
    and make the code harder to read.

    Signed-off-by: Jean Delvare
    Acked-by: Petr Vandrovec
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • With multihead support always enabled, these macros are no longer needed
    and make the code harder to read.

    Signed-off-by: Jean Delvare
    Acked-by: Petr Vandrovec
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • I would like to get rid of option CONFIG_FB_MATROX_MULTIHEAD and just
    always enable it. There are many reasons for doing this:

    * CONFIG_FB_MATROX_MULTIHEAD=y is what all x86 distributions do, so it
    definitely works or we would know by now.

    * Building the matroxfb driver with CONFIG_FB_MATROX_MULTIHEAD not set
    results in the following build warning:

    drivers/video/matrox/matroxfb_crtc2.c: In function 'matroxfb_dh_open':
    drivers/video/matrox/matroxfb_crtc2.c:265: warning: the address of 'matroxfb_global_mxinfo' will always evaluate as 'true'
    drivers/video/matrox/matroxfb_crtc2.c: In function 'matroxfb_dh_release':
    drivers/video/matrox/matroxfb_crtc2.c:285: warning: the address of 'matroxfb_global_mxinfo' will always evaluate as 'true'

    This is nothing to be worried about, the driver will work fine, but build
    warnings are still annoying.

    * The trick to get multihead support without CONFIG_FB_MATROX_MULTIHEAD,
    which is described in the config help text, no longer works: you can't
    load the same kernel module more than once.

    * I fail to see how CONFIG_FB_MATROX_MULTIHEAD=y would make the code
    significantly slower, contrary to what the help text says. A few extra
    parameters on the stack here and there can't really slow things down in
    comaprison to the rest of the code, and register access.

    * The driver built without CONFIG_FB_MATROX_MULTIHEAD is larger than the
    driver build with CONFIG_FB_MATROX_MULTIHEAD=y by 8%.

    * One less configuration option makes things simpler. We add options
    all the time, being able to remove one for once is nice. It improves
    testing coverage. And I don't think the Matrox adapters are still
    popular enough to warrant overdetailed configuration settings.

    * We should be able to unobfuscate the driver code quite a bit after
    this change (patches follow.)

    Signed-off-by: Jean Delvare
    Acked-by: Petr Vandrovec
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jean Delvare
     
  • At the moment about half of the framebuffer drivers can return an error
    code in fb_set_par. Until now it would be silently ignored by fbmem.c
    and fbcon.c. This patch fixes fbmem.c to return the error code and
    restore var on error.

    But it is not clear in which video mode the device is when fb_set_par
    fails. It would be good and reasonable if it were in the old state but
    there is no guarantee that this is true for all existing drivers.
    Additionally print a message if a failing fb_set_par is detected in
    fbmem.c or fbcon.c.

    Although most errors should be caught by the previous fb_check_var some
    errors can't as they are dynamic (memory allocations, ...) and can only be
    detected while performing the operations which is forbidden in
    fb_check_var.

    This patch shouldn't have a negative impact on normal operation as all
    drivers return 0 on success. The impact in case of error depends heavily
    on the driver and caller but it's expected to be better than before.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • In the final part of the calculation for the tft display clockrate we
    divide the output pf s3c2410fb_calc_pixclk() by 2 which leaves us with a
    rounding error if the result is odd.

    Change to using DIV_ROUND_UP() to ensure that we always choose a higher
    divisor and thus a lower frequency.

    Signed-off-by: Ben Dooks
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ben Dooks
     
  • Use DIV_ROUND_UP explicitly instead of manual shifts and adds. It makes
    the code more readable and consistent (sometimes there were shifts,
    sometimes divs).

    There is no change on the assembly level (compilers should do the right
    job).

    Signed-off-by: Jiri Slaby
    Cc: Sergey Senozhatsky
    Cc: Andi Kleen
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Slaby
     
  • Fix the range check for panning. The current code fails to detect some
    invalid values (very high ones that can occur if an app tries to move
    further up/left than 0,0) as the check uses the unknown values for
    calculation so that an overflow can occur.

    To fix this it is sufficient to move the calculation to the right side to
    use only trusted values.

    Kai Jiang detected this problem and proposed an initial patch.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Kai Jiang
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • Check that the result of kmalloc is not NULL before passing it to other
    functions.

    The semantic match that finds this problem is as follows:
    (http://www.emn.fr/x-info/coccinelle/)

    //
    @@
    expression *x;
    identifier f;
    constant char *C;
    @@

    x = \(kmalloc\|kcalloc\|kzalloc\)(...);
    ... when != x == NULL
    when != x != NULL
    when != (x || ...)
    (
    kfree(x)
    |
    f(...,C,...,x,...)
    |
    *f(...,x,...)
    |
    *x->f
    )
    //

    [akpm@linux-foundation.org: convert to kstrdup() as well]
    Signed-off-by: Julia Lawall
    Cc: Ming Lei
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Julia Lawall
     
  • It reads linetable[] before checking bounds of index, and ARRAY_SIZE is
    required because linetable[] are unsigned shorts.

    Signed-off-by: Roel Kluin
    Cc: Ralf Baechle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roel Kluin
     
  • Signed-off-by: Harald Welte
    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harald Welte
     
  • Signed-off-by: Harald Welte
    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harald Welte
     
  • Enable 2D hardware acceleration on VX855 for copyarea, imageblit and
    fillrect by selecting the correct engine which is the same as in VX800.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • Add support for a new VIA integrated graphics chipset, the VX855.

    Signed-off-by: HaraldWelte
    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harald Welte
     
  • viafb: use read-only mode parsing

    The previous method of mode parsing wrote to the strings resulting in
    truncated mode strings in the sysfs.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • Remove a structure member 'on_slot' in the chip_info structure which is
    completely unused.

    Signed-off-by: Harald Welte
    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harald Welte
     
  • Signed-off-by: Harald Welte
    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Harald Welte
     
  • The main motivation of this patch was to merge the three initialization
    functions in one and clean it up. However as some changes in other code
    areas where needed to do it right some small other changes were made.

    Changes to viafb_par:

    io_virt renamed as engine_mmio and moved to shared
    VQ_start renamed as vq_vram_addr and moved to shared
    VQ_end removed as it is easily recalculatable

    vq_vram_addr is not strictly needed but keep it to track where we
    allocated video memory. The memory allocated for the virtual queue was
    shrunk to VQ_SIZE as VQ_SIZE+CURSOR_SIZE looked like a bug to me. But to
    be honest I don't have the faintest idea what virtual queues are for in
    the graphic hardware and whether the driver needs them in any way. I only
    know that they aren't directly accessed by the driver and so the only
    potential current use would be as hardware internal buffers. For now keep
    them to avoid regressions and only remove the double cursor allocation.

    The most changes were caused by renames and the mentioned structure
    changes so the chance of regressions is pretty low. The meaning of
    viafb_accel changed slightly as previously it was changed back and forth
    in the code and allowed to enable the hardware acceleration by software if
    previously disabled. The new behaviour is that viafb_accel=0 always
    prevents hardware acceleration. With viafb_accel!=0 the acceleration can
    be freely choosen by set_var. This means viafb_accel is a diagnostic tool
    and if someone has to use viafb_accel=0 the driver needs to be fixed.

    As this is mostly a code cleanup no regressions beside the slightly change
    of viafb_accel is expected.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • Split the pitch handling up and replaces the calculation from virtual xres
    and bpp with fix.line_length which already contains the pitch and does not
    add any constrains for the virtual resolution.

    Also add a bit to the second pitch which the documentation mentions but
    which was ignored by the driver.

    Although it is a bit unclear what the right pitch for some LCD modes is
    this patch should have no negative runtime impact.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • Clean the hardware cursor handling up.

    The most notable change is that it no longer buffers the values in
    viacursor but uses the ones in cursor instead as they are guaranteed to be
    always valid.

    Furthermore it uses local instead global variables where possible, moves
    the cursor variable in shared as only one hardware cursor is supported and
    returns an error if memory allocation fails. Last but not least it fixes
    a too small buffer (as u32 has only 4 and not 32 bytes) but this did not
    produce any known problems.

    This is mostly a code cleanup, no negative runtime changes are expected.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • Signed-off-by: Alexey Dobriyan
    Acked-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • This patch is a completly rewritten 2D engine. The engine is no longer in
    a default state but reinitialized every time to allow usage for both
    framebuffers regardless of their settings.

    The whole engine handling is concentrated in a big function which takes 16
    parameters. Although the number of parameters is worryingly it is good to
    have a single funtion to deal with this stuff as it allows to easily
    support different engines and avoids some code duplication.

    On the way support for the new 2D engine in VX800 was added. As the with
    less code duplication but it is probably better to duplicate the code as
    this way is easier to walk if VIA ever decides to release a new engine
    which changes anything the driver touches.

    The engine support for VX800 gives a notable boost in speed. There are no
    known regressions but as this patch changes paths I do neither have the
    hardware nor documentation to check and has the possibility to put the
    system in a critical state heavy testing is appreciated.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • This patch introduces viafb_shared and is the beginning of a smooth
    transition to use it.

    viafb_shared should contain all general, non-surface specific data that
    should be shared along all viafb framebuffers while viafb_par should only
    contain things that are specific to each surface or in other words extend
    fb_info. This change is intended to clean the dual/multi framebuffer
    handling up.

    This removes the annoyance that viafbinfo1->par points to a different
    structure than viaparinfo1.

    As the last change is fundamental it is difficult to ensure that all parts
    of the driver do not depend on the previous brokenness but the chance of
    regressions is very low.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • This removes the completly useless io variable as well as the temporary
    used variables mmio_base and mmio_len in favor to use directly the fb_info
    variables.

    This is a code cleanup only, no runtime change expected.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • At least for VX800 this initialization is not very good as some parts of
    the register are written with reserved values. This makes the display go
    white in some configurations and not usable until the framebuffer is
    removed. It's better to not initialize it as it allows to use a
    previously (by BIOS) correctly configured display.

    This patch makes some displays work but might cause problems on others.
    This is bad but can not be easily avoided. If this causes some
    regressions it's probably the best to fix it in the 'active' display setup
    code.

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat
     
  • Remove everything related to video devices from the driver as it did not
    influence the driver operation. This patch does change the userspace
    behaviour as it removes two IOCTLs and one module parameter. But this is
    good as it removes useless stuff and helps the user to figure out the
    options that do affect the driver behaviour (which are still too many).

    Signed-off-by: Florian Tobias Schandinat
    Cc: Scott Fang
    Cc: Joseph Chan
    Cc: Harald Welte
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Florian Tobias Schandinat