11 Sep, 2005

7 commits

  • Fix the sparse warning "implicit cast to nocast type"

    Signed-off-by: Victor Fusco
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Victor Fusco
     
  • Fix the sparse warning "implicit cast to nocast type"

    Signed-off-by: Victor Fusco
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Victor Fusco
     
  • Fix the sparse warning "implicit cast to nocast type"

    Signed-off-by: Victor Fusco
    Signed-off-by: Domen Puncer
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Victor Fusco
     
  • With Nick Piggin

    Give some things static scope.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This patch implements a task state bit (TASK_NONINTERACTIVE), which can be
    used by blocking points to mark the task's wait as "non-interactive". This
    does not mean the task will be considered a CPU-hog - the wait will simply
    not have an effect on the waiting task's priority - positive or negative
    alike. Right now only pipe_wait() will make use of it, because it's a
    common source of not-so-interactive waits (kernel compilation jobs, etc.).

    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • The cpusets-formalize-intermediate-gfp_kernel-containment patch
    has a deadlock problem.

    This patch was part of a set of four patches to make more
    extensive use of the cpuset 'mem_exclusive' attribute to
    manage kernel GFP_KERNEL memory allocations and to constrain
    the out-of-memory (oom) killer.

    A task that is changing cpusets in particular ways on a system
    when it is very short of free memory could double trip over
    the global cpuset_sem semaphore (get the lock and then deadlock
    trying to get it again).

    The second attempt to get cpuset_sem would be in the routine
    cpuset_zone_allowed(). This was discovered by code inspection.
    I can not reproduce the problem except with an artifically
    hacked kernel and a specialized stress test.

    In real life you cannot hit this unless you are manipulating
    cpusets, and are very unlikely to hit it unless you are rapidly
    modifying cpusets on a memory tight system. Even then it would
    be a rare occurence.

    If you did hit it, the task double tripping over cpuset_sem
    would deadlock in the kernel, and any other task also trying
    to manipulate cpusets would deadlock there too, on cpuset_sem.
    Your batch manager would be wedged solid (if it was cpuset
    savvy), but classic Unix shells and utilities would work well
    enough to reboot the system.

    The unusual condition that led to this bug is that unlike most
    semaphores, cpuset_sem _can_ be acquired while in the page
    allocation code, when __alloc_pages() calls cpuset_zone_allowed.
    So it easy to mistakenly perform the following sequence:
    1) task makes system call to alter a cpuset
    2) take cpuset_sem
    3) try to allocate memory
    4) memory allocator, via cpuset_zone_allowed, trys to take cpuset_sem
    5) deadlock

    The reason that this is not a serious bug for most users
    is that almost all calls to allocate memory don't require
    taking cpuset_sem. Only some code paths off the beaten
    track require taking cpuset_sem -- which is good. Taking
    a global semaphore on the main code path for allocating
    memory would not scale well.

    This patch fixes this deadlock by wrapping the up() and down()
    calls on cpuset_sem in kernel/cpuset.c with code that tracks
    the nesting depth of the current task on that semaphore, and
    only does the real down() if the task doesn't hold the lock
    already, and only does the real up() if the nesting depth
    (number of unmatched downs) is exactly one.

    The previous required use of refresh_mems(), anytime that
    the cpuset_sem semaphore was acquired and the code executed
    while holding that semaphore might try to allocate memory, is
    no longer required. Two refresh_mems() calls were removed
    thanks to this. This is a good change, as failing to get
    all the necessary refresh_mems() calls placed was a primary
    source of bugs in this cpuset code. The only remaining call
    to refresh_mems() is made while doing a memory allocation,
    if certain task memory placement data needs to be updated
    from its cpuset, due to the cpuset having been changed behind
    the tasks back.

    Signed-off-by: Paul Jackson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Jackson
     
  • This patch (written by me and also containing many suggestions of Arjan van
    de Ven) does a major cleanup of the spinlock code. It does the following
    things:

    - consolidates and enhances the spinlock/rwlock debugging code

    - simplifies the asm/spinlock.h files

    - encapsulates the raw spinlock type and moves generic spinlock
    features (such as ->break_lock) into the generic code.

    - cleans up the spinlock code hierarchy to get rid of the spaghetti.

    Most notably there's now only a single variant of the debugging code,
    located in lib/spinlock_debug.c. (previously we had one SMP debugging
    variant per architecture, plus a separate generic one for UP builds)

    Also, i've enhanced the rwlock debugging facility, it will now track
    write-owners. There is new spinlock-owner/CPU-tracking on SMP builds too.
    All locks have lockup detection now, which will work for both soft and hard
    spin/rwlock lockups.

    The arch-level include files now only contain the minimally necessary
    subset of the spinlock code - all the rest that can be generalized now
    lives in the generic headers:

    include/asm-i386/spinlock_types.h | 16
    include/asm-x86_64/spinlock_types.h | 16

    I have also split up the various spinlock variants into separate files,
    making it easier to see which does what. The new layout is:

    SMP | UP
    ----------------------------|-----------------------------------
    asm/spinlock_types_smp.h | linux/spinlock_types_up.h
    linux/spinlock_types.h | linux/spinlock_types.h
    asm/spinlock_smp.h | linux/spinlock_up.h
    linux/spinlock_api_smp.h | linux/spinlock_api_up.h
    linux/spinlock.h | linux/spinlock.h

    /*
    * here's the role of the various spinlock/rwlock related include files:
    *
    * on SMP builds:
    *
    * asm/spinlock_types.h: contains the raw_spinlock_t/raw_rwlock_t and the
    * initializers
    *
    * linux/spinlock_types.h:
    * defines the generic type and initializers
    *
    * asm/spinlock.h: contains the __raw_spin_*()/etc. lowlevel
    * implementations, mostly inline assembly code
    *
    * (also included on UP-debug builds:)
    *
    * linux/spinlock_api_smp.h:
    * contains the prototypes for the _spin_*() APIs.
    *
    * linux/spinlock.h: builds the final spin_*() APIs.
    *
    * on UP builds:
    *
    * linux/spinlock_type_up.h:
    * contains the generic, simplified UP spinlock type.
    * (which is an empty structure on non-debug builds)
    *
    * linux/spinlock_types.h:
    * defines the generic type and initializers
    *
    * linux/spinlock_up.h:
    * contains the __raw_spin_*()/etc. version of UP
    * builds. (which are NOPs on non-debug, non-preempt
    * builds)
    *
    * (included on UP-non-debug builds:)
    *
    * linux/spinlock_api_up.h:
    * builds the _spin_*() APIs.
    *
    * linux/spinlock.h: builds the final spin_*() APIs.
    */

    All SMP and UP architectures are converted by this patch.

    arm, i386, ia64, ppc, ppc64, s390/s390x, x64 was build-tested via
    crosscompilers. m32r, mips, sh, sparc, have not been tested yet, but should
    be mostly fine.

    From: Grant Grundler

    Booted and lightly tested on a500-44 (64-bit, SMP kernel, dual CPU).
    Builds 32-bit SMP kernel (not booted or tested). I did not try to build
    non-SMP kernels. That should be trivial to fix up later if necessary.

    I converted bit ops atomic_hash lock to raw_spinlock_t. Doing so avoids
    some ugly nesting of linux/*.h and asm/*.h files. Those particular locks
    are well tested and contained entirely inside arch specific code. I do NOT
    expect any new issues to arise with them.

    If someone does ever need to use debug/metrics with them, then they will
    need to unravel this hairball between spinlocks, atomic ops, and bit ops
    that exist only because parisc has exactly one atomic instruction: LDCW
    (load and clear word).

    From: "Luck, Tony"

    ia64 fix

    Signed-off-by: Ingo Molnar
    Signed-off-by: Arjan van de Ven
    Signed-off-by: Grant Grundler
    Cc: Matthew Wilcox
    Signed-off-by: Hirokazu Takata
    Signed-off-by: Mikael Pettersson
    Signed-off-by: Benoit Boissinot
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     

10 Sep, 2005

33 commits

  • Most awkward part of this is delaying write requests until bitmap updates have
    been flushed.

    To achieve this, we have a sequence number (seq_flush) which is incremented
    each time the raid5 is unplugged.

    If the raid thread notices that this has changed, it flushes bitmap changes,
    and assigned the value of seq_flush to seq_write.

    When a write request arrives, it is given the number from seq_write, and that
    write request may not complete until seq_flush is larger than the saved seq
    number.

    We have a new queue for storing stripes which are waiting for a bitmap flush
    and an extra flag for stripes to record if the write was 'degraded' and so
    should not clear the a bit in the bitmap.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • version-1 superblocks are not (normally) 4K long, and can be of variable size.
    Writing the full 4K can cause corruption (but only in non-default
    configurations).

    With this patch the super-block-flavour can choose a size to read, and set a
    size to write based on what it finds.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • These inlines haven't been used for ages, they should go.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • As this is used to flag an internal bitmap.

    Also, introduce symbolic names for feature bits.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • linear currently uses division by the size of the smallest componenet device
    to find which device a request goes to. If that smallest device is larger
    than 2 terabytes, then the division will not work on some systems.

    So we introduce a pre-shift, and take care not to make the hash table too
    large, much like the code in raid0.

    Also get rid of conf->nr_zones, which is not needed.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • If a device is flagged 'WriteMostly' and the array has a bitmap, and the
    bitmap superblock indicates that write_behind is allowed, then write_behind is
    enabled for WriteMostly devices.

    Write requests will be acknowledges as complete to the caller (via b_end_io)
    when all non-WriteMostly devices have completed the write, but will not be
    cleared from the bitmap until all devices complete.

    This requires memory allocation to make a local copy of the data being
    written. If there is insufficient memory, then we fall-back on normal write
    semantics.

    Signed-Off-By: Paul Clements
    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • This allows a device in a raid1 to be marked as "write mostly". Read requests
    will only be sent if there is no other option.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Both file-bitmaps and superblock bitmaps are supported.

    If you add a bitmap file on the array device, you lose.

    This introduces a 'default_bitmap_offset' field in mddev, as the ioctl used
    for adding a superblock bitmap doesn't have room for giving an offset. Later,
    this value will be setable via sysfs.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Linus Torvalds
     
  • Don't just irritate all other kernel developers. Fix the users first,
    then you can re-introduce the must-check infrastructure to avoid new
    cases creeping in.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Linus Torvalds
     
  • Linus Torvalds
     
  • Clean up timer initialization by introducing DEFINE_TIMER a'la
    DEFINE_SPINLOCK. Build and boot-tested on x86. A similar patch has been
    been in the -RT tree for some time.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     
  • This patch adds a new FSYNCDIR request, which is sent when fsync is called
    on directories. This operation is available in libfuse 2.3-pre1 or
    greater.

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • Make data caching behavior selectable on a per-open basis instead of
    per-mount. Compatibility for the old mount options 'kernel_cache' and
    'direct_io' is retained in the userspace library (version 2.4.0-pre1 or
    later).

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • This patch removes a long lasting "hack" in FUSE, which used a separate
    channel (a file descriptor refering to a disk-file) to transfer directory
    contents from userspace to the kernel.

    The patch adds three new operations (OPENDIR, READDIR, RELEASEDIR), which
    have semantics and implementation exactly maching the respective file
    operations (OPEN, READ, RELEASE).

    This simplifies the directory reading code. Also disk space is not
    necessary, which can be important in embedded systems.

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • Add padding to structures to make sizes the same on 32bit and 64bit archs.
    Initial testing and test machine generously provided by Franco Broi.

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • This patch adds the extended attribute operations to FUSE.

    The following operations are added:

    o getxattr
    o setxattr
    o listxattr
    o removexattr

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • This patch adds the file operations of FUSE.

    The following operations are added:

    o open
    o flush
    o release
    o fsync
    o readpage
    o commit_write

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • This patch adds the write filesystem operations of FUSE.

    The following operations are added:

    o setattr
    o symlink
    o mknod
    o mkdir
    o create
    o unlink
    o rmdir
    o rename
    o link

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • This patch adds the read-only filesystem operations of FUSE.

    This contains the following files:

    o dir.c
    - directory, symlink and file-inode operations

    The following operations are added:

    o lookup
    o getattr
    o readlink
    o follow_link
    o directory open
    o readdir
    o directory release
    o permission
    o dentry revalidate
    o statfs

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • This adds the FUSE device handling functions.

    This contains the following files:

    o dev.c
    - fuse device operations (read, write, release, poll)
    - registers misc device
    - support for sending requests to userspace

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • This patch adds FUSE core.

    This contains the following files:

    o inode.c
    - superblock operations (alloc_inode, destroy_inode, read_inode,
    clear_inode, put_super, show_options)
    - registers FUSE filesystem

    o fuse_i.h
    - private header file

    Requirements
    ============

    The most important difference between orinary filesystems and FUSE is
    the fact, that the filesystem data/metadata is provided by a userspace
    process run with the privileges of the mount "owner" instead of the
    kernel, or some remote entity usually running with elevated
    privileges.

    The security implication of this is that a non-privileged user must
    not be able to use this capability to compromise the system. Obvious
    requirements arising from this are:

    - mount owner should not be able to get elevated privileges with the
    help of the mounted filesystem

    - mount owner should not be able to induce undesired behavior in
    other users' or the super user's processes

    - mount owner should not get illegitimate access to information from
    other users' and the super user's processes

    These are currently ensured with the following constraints:

    1) mount is only allowed to directory or file which the mount owner
    can modify without limitation (write access + no sticky bit for
    directories)

    2) nosuid,nodev mount options are forced

    3) any process running with fsuid different from the owner is denied
    all access to the filesystem

    1) and 2) are ensured by the "fusermount" mount utility which is a
    setuid root application doing the actual mount operation.

    3) is ensured by a check in the permission() method in kernel

    I started thinking about doing 3) in a different way because Christoph
    H. made a big deal out of it, saying that FUSE is unacceptable into
    mainline in this form.

    The suggested use of private namespaces would be OK, but in their
    current form have many limitations that make their use impractical (as
    discussed in this thread).

    Suggested improvements that would address these limitations:

    - implement shared subtrees

    - allow a process to join an existing namespace (make namespaces
    first-class objects)

    - implement the namespace creation/joining in a PAM module

    With all that in place the check of owner against current->fsuid may
    be removed from the FUSE kernel module, without compromising the
    security requirements.

    Suid programs still interesting questions, since they get access even
    to the private namespace causing some information leak (exact
    order/timing of filesystem operations performed), giving some
    ptrace-like capabilities to unprivileged users. BTW this problem is
    not strictly limited to the namespace approach, since suid programs
    setting fsuid and accessing users' files will succeed with the current
    approach too.

    Signed-off-by: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Miklos Szeredi
     
  • This patch changes a macro definition so that kernel-doc can understand it.

    Signed-off-by: Martin Waitz
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Martin Waitz
     
  • This set of two patches add support for the framebuffer of the Samsung S3C2410
    ARM SoC. This driver was started about one year ago and is now used on iPAQ
    h1930/h1940, Acer n30 and probably other s3c2410-based machines I'm not aware
    of. I've also heard yesterday that it's working also on iPAQ rx3715/rx3115
    (s3c2440-based machines).

    Signed-Off-By: Arnaud Patard
    Signed-off-by: Antonino Daplas
    Signed-off-by: Ben Dooks
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arnaud Patard
     
  • The function bit_putcs() in drivers/video/console/bitblit.c is becoming large.
    Break it up into its component functions (bit_putcs_unaligned and
    bit_putcs_aligned).

    Incorporated fb_pad_aligned_buffer() optimization by Roman Zippel.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • To solve touchscreen interference problems devices like the Sharp Zaurus
    SL-C3000 need to know the length of the horitzontal sync pulses. This patch
    adds a hook to pxafb so the touchscreen driver can function correctly.

    Signed-Off-By: Richard Purdie
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Richard Purdie
     
  • The Coordinated Video Timings (CVT) is the latest standard approved by VESA
    concerning video timings generation. It addresses the limitation of GTF which
    is designed mainly for CRT displays. CRT's have a high blanking requirement
    (as much as 25% of the horizontal frame length) which artificially increases
    the pixelclock. Digital displays, on the other hand, needs to conserve the
    pixelclock as much as possible. The GTF also does not take into account the
    different aspect ratios in its calculation.

    The new function added is fb_find_mode_cvt(). It is called by fb_find_mode()
    if it recognizes a mode option string formatted for CVT. The format is:

    x[M][R][-][][i][m]

    The 'M' tells the function to calculate using CVT. On it's own, it will
    compute a timing for CRT displays at 60Hz. If the 'R' is specified, 'reduced
    blanking' computation will be used, best for flatpanels. The 'i' and the 'm'
    is for 'interlaced mode' and 'with margins' respectively.

    To determine if CVT was used, check for dmesg for something like this:

    CVT Mode - M[-R], ie: .480M3-R (800x600 reduced blanking)

    where: pix - product of xres and yres, in MB
    M - is a CVT mode
    n - the aspect ratio (3 - 4:3; 4 - 5:4; 9 - 16:9, 15:9; A - 16:10)
    -R - reduced blanking

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • This patch makes some small rearrangements of the PCI probing code in
    order to make it possible for arch code to set up the PCI tree
    without needing to duplicate code from the PCI layer unnecessarily.
    PPC64 will use this to set up the PCI tree from the Open Firmware
    device tree, which we need to do on logically-partitioned pSeries
    systems.

    Signed-off-by: Paul Mackerras
    Signed-off-by: Greg Kroah-Hartman

    Paul Mackerras
     
  • This is a framebuffer driver for the Cyberblade/i1 graphics core.

    Currently tridenfb claims to support the cyberblade/i1 graphics core. This
    is of very limited truth. Even vesafb is faster and provides more working
    modes and a much better quality of the video signal. There is a great
    number of bugs in tridentfb ... but most often it is impossible to decide
    if these bugs are real bugs or if fixing them for the cyberblade/i1 core
    would break support for one of the other supported chips.

    Tridentfb seems to be unmaintained,and documentation for most of the
    supported chips is not available. So "fixing" cyberblade/i1 support inside
    of tridentfb was not an option, it would have caused numerous
    if(CYBERBLADEi1) else ... cases and would have rendered the code to be
    almost unmaintainable.

    A first version of this driver was published on 2005-07-31. A fix for a
    bug reported by Jochen Hein was integrated as well as some changes
    requested by Antonino A. Daplas.

    A message has been added to tridentfb to inform current users of tridentfb
    to switch to cyblafb if the cyberblade/i1 graphics core is detected.

    This patch is one logical change, but because of the included documentation
    it is bigger than 70kb. Therefore it is not sent to lkml and
    linux-fbdev-devel,

    Signed-off-by: Knut Petersen
    Cc: Muli Ben-Yehuda
    Acked-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Knut Petersen
     
  • This lifts sisfb from version 1.7.17 to version 1.8.9. Changes include:

    - Added support for XGI V3XT, V5, V8, Z7 chipsets, including POSTing of
    all of these chipsets.

    - Added support for latest SiS chipsets (761).

    - Added support for SiS76x memory "hybrid" mode.

    - Added support for new LCD resolutions (eg 1280x854, 856x480).

    - Fixed support for 320x240 STN panels (for embedded devices).

    - Fixed many HDTV modes (525p, 750p, 1080i).

    - Fixed PCI config register reading/writing to use proper kernel
    functions for this purpose.

    - Fixed PCI ROM handling to use the kernel's proper functions.

    - Removed lots of "typedef"s.

    - Removed lots of code which was for X.org/XFree86 only.

    - Fixed coding style in many places.

    - Removed lots of 2.4 cruft.

    - Reduced stack size by unifying two previously separate structs into
    one.

    - Added new hooks for memory allocation (for DRM). Now the driver can
    truly handle multiple cards, including memory management.

    - Fixed numerous minor bugs.

    Signed-off-by: Thomas Winischhofer
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Winischhofer
     
  • Currently, fbcon assumes that the visual FB_VISUAL_MONO* is always 1 bit.
    According to Geert, there are old hardware where it's possible to have
    monochrome at 8-bit, but has only 2 colors, black - 0x00 and white - 0xff.
    Fix color handlers (fb_get_color_depth, and get_color) for this special case.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • For the i386, code is already present in video.S that gets the EDID from the
    video BIOS. Make this visible so drivers can also use this data as fallback
    when i2c does not work.

    To ensure that the EDID block is returned for the primary graphics adapter
    only, by check if the IORESOURCE_ROM_SHADOW flag is set.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas