Bug 65661 - (i830) i830m driver only uses stolen memory reported by the bios
i830m driver only uses stolen memory reported by the bios
Status: CLOSED RAWHIDE
Product: Red Hat Linux
Classification: Retired
Component: XFree86 (Show other bugs)
7.3
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Mike A. Harris
David Lawrence
:
: 69974 (view as bug list)
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2002-05-29 13:23 EDT by Matthew Galgoci
Modified: 2007-04-18 12:42 EDT (History)
9 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2002-08-23 12:24:29 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Matthew Galgoci 2002-05-29 13:23:27 EDT
Description of Problem:

The hardware in question is a Dell c400 with an i830m video chipset.

I am unable to make XFree86 work beyond 1024x768@8bpp with an i830m video
card.

Even through the agp driver allocates as much as 128MB of ram, X itself refuses
to start when I try to push the display depth beyond 16bpp, claiming that the
requested mode is unavailable.

When the agpgart driver is loaded, I get the following message:

Linux agpgart interface v0.99 (c) Jeff Hartmann
agpgart: Maximum main memory to use for agp memory: 202M
agpgart: Detected an Intel 830M Chipset.
agpgart: detected 1024K stolen memory.
agpgart: AGP aperture is 128M @ 0xe0000000

When the i830 drm driver is loaded

[drm] AGP 0.99 on Intel i810 @ 0xe0000000 128MB
[drm] Initialized i830 1.2.0 20011004 on minor 0

When I try to start X in 1024x768@16bpp mode, I get the following error
message:

(**) I810(0): Depth 16, (--) framebuffer bpp 16
(==) I810(0): RGB weight 565
(==) I810(0): Default visual is TrueColor
(WW) I810(0): Bad V_BIOS checksum
(II) I810(0): Primary V_BIOS segment is: 0xc000
(--) I810(0): Chipset: "i830"
(--) I810(0): Linear framebuffer at 0xE0000000
(--) I810(0): IO registers at addr 0xF4F80000
(II) I810(0): detected 1024K stolen memory.
(II) I810(0): I810CheckAvailableMemory: 206844k available
(==) I810(0): Will alloc AGP framebuffer: 16384 kByte
(==) I810(0): Using gamma correction (1.0, 1.0, 1.0)
(II) I810(0): Currently active displays on Pipe A:
(II) I810(0):     LFP (Local Flat Panel) child device
(II) Loading sub module "vbe"
(II) LoadModule: "vbe"
(II) Loading /usr/X11R6/lib/modules/libvbe.a
(II) Module vbe: vendor="The XFree86 Project"
	compiled for 4.2.0, module version = 1.0.0
	ABI class: XFree86 Video Driver, version 0.5
(II) VESA BIOS detected
(II) VESA VBE Version 3.0
(II) VESA VBE Total Mem: 832 kB
(II) VESA VBE OEM: Almador Graphics Chip Accelerated VGA BIOS
(II) VESA VBE OEM Software Rev: 1.0
(II) VESA VBE OEM Vendor: Intel Corporation
(II) VESA VBE OEM Product: Almador Graphics Controller
(II) VESA VBE OEM Product Rev: Hardware Version 0.0
(II) Loading sub module "ddc"
(II) LoadModule: "ddc"
(II) Loading /usr/X11R6/lib/modules/libddc.a
(II) Module ddc: vendor="The XFree86 Project"
	compiled for 4.2.0, module version = 1.0.0
	ABI class: XFree86 Video Driver, version 0.5
(II) I810(0): VESA VBE DDC supported
(II) I810(0): VESA VBE DDC Level none
(II) I810(0): VESA VBE DDC transfer in appr. 0 sec.
(II) I810(0): VESA VBE DDC read failed
(==) I810(0): DPI set to (75, 75)
(EE) I810(0): No matching modes found in configuration file.
(EE) I810(0): Only the following modes are supported by the BIOS in this bpp:
(EE) I810(0): 640x480
(EE) I810(0): Please choose one of these modes.


When I try 1024x768@8bpp, X starts up and I get the following:

(**) I810(0): Depth 8, (--) framebuffer bpp 8
(==) I810(0): RGB weight 888
(==) I810(0): Default visual is PseudoColor
(WW) I810(0): Bad V_BIOS checksum
(II) I810(0): Primary V_BIOS segment is: 0xc000
(--) I810(0): Chipset: "i830"
(--) I810(0): Linear framebuffer at 0xE0000000
(--) I810(0): IO registers at addr 0xF4F80000
(II) I810(0): detected 1024K stolen memory.
(II) I810(0): I810CheckAvailableMemory: 206844k available
(==) I810(0): Will alloc AGP framebuffer: 16384 kByte
(==) I810(0): Using gamma correction (1.0, 1.0, 1.0)
(II) I810(0): Currently active displays on Pipe A:
(II) I810(0):     LFP (Local Flat Panel) child device
(II) Loading sub module "vbe"
(II) LoadModule: "vbe"
(II) Loading /usr/X11R6/lib/modules/libvbe.a
(II) Module vbe: vendor="The XFree86 Project"
        compiled for 4.2.0, module version = 1.0.0
        ABI class: XFree86 Video Driver, version 0.5
(II) VESA BIOS detected
(II) VESA VBE Version 3.0
(II) VESA VBE Total Mem: 832 kB
(II) VESA VBE OEM: Almador Graphics Chip Accelerated VGA BIOS
(II) VESA VBE OEM Software Rev: 1.0
(II) VESA VBE OEM Vendor: Intel Corporation
(II) VESA VBE OEM Product: Almador Graphics Controller
(II) VESA VBE OEM Product Rev: Hardware Version 0.0
(II) Loading sub module "ddc"
(II) LoadModule: "ddc"
(II) Loading /usr/X11R6/lib/modules/libddc.a
(II) Module ddc: vendor="The XFree86 Project"
        compiled for 4.2.0, module version = 1.0.0
        ABI class: XFree86 Video Driver, version 0.5
(II) I810(0): VESA VBE DDC supported
(II) I810(0): VESA VBE DDC Level none
(II) I810(0): VESA VBE DDC transfer in appr. 0 sec.
(II) I810(0): VESA VBE DDC read failed
(==) I810(0): DPI set to (75, 75)
(--) I810(0): Virtual size is 1024x768 (pitch 1024)
(**) I810(0): Default mode "1024x768"
(II) Loading sub module "fb"
(II) LoadModule: "fb"
(II) Loading /usr/X11R6/lib/modules/libfb.a
(II) Module fb: vendor="The XFree86 Project"
        compiled for 4.2.0, module version = 1.0.0
        ABI class: XFree86 ANSI C Emulation, version 0.1
(II) Loading sub module "xaa"
(II) LoadModule: "xaa"
(II) Loading /usr/X11R6/lib/modules/libxaa.a
(II) Module xaa: vendor="The XFree86 Project"
        compiled for 4.2.0, module version = 1.0.0
        ABI class: XFree86 Video Driver, version 0.5
(II) do I need RAC?  No, I don't.
(II) resource ranges after preInit:
        [0] 0   0xf4f80000 - 0xf4ffffff (0x80000) MS[B]
        [1] 0   0xe0000000 - 0xe7ffffff (0x8000000) MS[B]
        [2] -1  0xffe00000 - 0xffffffff (0x200000) MX[B](B)
        [3] -1  0x00100000 - 0x0fffffff (0xff00000) MX[B]E(B)
        [4] -1  0x000f0000 - 0x000fffff (0x10000) MX[B]
        [5] -1  0x000c0000 - 0x000effff (0x30000) MX[B]
        [6] -1  0x00000000 - 0x0009ffff (0xa0000) MX[B]
        [7] -1  0xfafffc00 - 0xfafffc7f (0x80) MX[B]
        [8] -1  0x10000000 - 0x100003ff (0x400) MX[B]
        [9] -1  0xf4f00000 - 0xf4f7ffff (0x80000) MX[B](B)
        [10] -1 0xd8000000 - 0xdfffffff (0x8000000) MX[B](B)
        [11] -1 0xf4f80000 - 0xf4ffffff (0x80000) MX[B](B)
        [12] -1 0xe0000000 - 0xe7ffffff (0x8000000) MX[B](B)
        [13] 0  0x000a0000 - 0x000affff(0x10000) MS[B](OprD)
        [14] 0  0x000b0000 - 0x000b7fff (0x8000) MS[B](OprD)
        [15] 0  0x000b8000 - 0x000bffff (0x8000) MS[B](OprD)
        [16] -1 0x0000ffff - 0x0000ffff (0x1) IX[B]
        [17] -1 0x00000000 - 0x000000ff (0x100) IX[B]
        [18] -1 0x0000ec80 - 0x0000ecff (0x80) IX[B]
        [19] -1 0x0000dc80 - 0x0000dcbf (0x40) IX[B]
        [20] -1 0x0000d800 - 0x0000d8ff (0x100) IX[B]
        [21] -1 0x0000bfa0 - 0x0000bfaf (0x10) IX[B]
        [22] -1 0x00000374 - 0x00000374 (0x1) IX[B]
        [23] -1 0x00000170 - 0x00000177 (0x8) IX[B]
        [24] -1 0x000003f4 - 0x000003f4 (0x1) IX[B]
        [25] -1 0x000001f0 - 0x000001f7 (0x8) IX[B]
        [26] -1 0x0000bf80 - 0x0000bf9f (0x20) IX[B]
        [27] 0  0x000003b0 - 0x000003bb (0xc) IS[B](OprU)
        [28] 0  0x000003c0 - 0x000003df (0x20) IS[B](OprU)
(==) I810(0): Default visual is PseudoColor
(EE) I810(0): [drm] Direct rendering only supported in 16 and 32 bpp modes
(==) I810(0): Write-combining range (0xe0000000,0x8000000)
(II) I810(0): vgaHWGetIOBase: hwp->IOBase is 0x03d0, hwp->PIOOffset is 0x0000
(II) I810(0): Adding 768 scanlines for pixmap caching
(II) I810(0): Allocated Scratch Memory
(II) I810(0): Using XFree86 Acceleration Architecture (XAA)
        Screen to screen bit blits
        Solid filled rectangles
        8x8 mono pattern filled rectangles
        Indirect CPU to Screen color expansion
        Solid Horizontal and Vertical Lines
        Offscreen Pixmaps
        Setting up tile and stipple cache:
                24 128x128 slots
                6 256x256 slots
(==) I810(0): Backing store disabled
(==) I810(0): Silken mouse enabled
(II) I810(0): Initializing HW Cursor
(**) Option "dpms"
(**) I810(0): DPMS enabled
(II) I810(0): direct rendering: Disabled
(II) Initializing built-in extension MIT-SHM
(II) Initializing built-in extension XInputExtension
(II) Initializing built-in extension XTEST
(II) Initializing built-in extension XKEYBOARD
(II) Initializing built-in extension LBX
(II) Initializing built-in extension XC-APPGROUP
(II) Initializing built-in extension SECURITY
(II) Initializing built-in extension XINERAMA
(II) Initializing built-in extension XFree86-Bigfont
(II) Initializing built-in extension RENDER
(**) Option "Protocol" "PS/2"
(**) Mouse0: Protocol: "PS/2"
(**) Option "CorePointer"
(**) Mouse0: Core Pointer
(**) Option "Device" "/dev/mouse"
(**) Option "Emulate3Buttons" "on"
(**) Mouse0: Emulate3Buttons, Emulate3Timeout: 50
(**) Option "ZAxisMapping" "4 5"
(**) Mouse0: ZAxisMapping: buttons 4 and 5
(**) Mouse0: Buttons: 5
(II) Keyboard "Keyboard0" handled by legacy driver
(II) XINPUT: Adding extended input device "Mouse0" (type: MOUSE)

fbdev does not improve the situation and in fact make the situation worse.

There is nothing in the bios that allows for the ammount of "stolen" memory
to be adjusted.

The Dell c400 is running the latest Dell bios, version A03, repeased on Febuary
15, 2002.

Version-Release number of selected component (if applicable):

The version of XFree86 installed is 4.2.0-8

The kernel version is 2.4.18-3
Comment 1 Mike A. Harris 2002-05-29 18:12:27 EDT
Thanks for putting this in bugzilla Matt.  Even though we discussed it all
on the phone, I'm putting the info in the report so we can track everything,
and others with similar issues can find it too.

Comment 2 Mike A. Harris 2002-05-29 20:12:09 EDT
Here is a URL that describes the situation in diary format, and has a lot
of info on this particular laptop and the X video issues.

http://www.cse.unsw.edu.au/~chak/linux/c400.html

Here is an Intel page on the i830/i830m chip and Linux support also:

http://support.intel.com/support/graphics/intel830m/tti013.htm

Summary of all of the above, is that Intel designed the chip to use 1Mb,
2Mb, 4Mb or 8Mb of system RAM.  Implementors are supposed to make this
configurable in the BIOS.  This particular laptop sets it to 1Mb without
giving the option to change the amount of video memory.  This results in
only low resolutions being available.

The real issue is that Dell's BIOS is buggy, and the proper fix is for
Dell to fix their BIOS and release an update.

Alternatively, with proper specifications for the hardware, and perhaps
a bit of technical discussion with an Intel engineer, this can all be
worked around by having the X video driver program the chip directly
to set the memory amount.  In the long run this will be the most likely
solution for this problem, if someone with both the hardware and specs
can update the XFree86 i830 driver to workaround this BIOS bug.

I'm contacting Intel about this problem, and hopefully the driver author
will fix it/workaround it.

In the mean time, an alternative exists in the form of a commercial X
server from XiGraphics.  The server claims to work on this hardware,
however that is as of yet unconfirmed.

I'll add more info as things turn up.
to
Comment 3 Mike A. Harris 2002-05-29 20:27:31 EDT
Oh, also.. just to note...

AGP memory is not available for general video memory, so 1Mb of memory
plus 2Gb of agp memory == 1Mb of memory.  AGP memory is memory in your
main system memory, which is mapped into the video card itself for usage
with 3D textures.  The agp memory appears to the video card as a continguous
block of memory from which it can yank textures for 3D acceleration, however
the actual physical memory is scattered throughout main memory.

Just thought I'd clarify that as AGP memory is commonly confused as
to what it really is for, etc.
Comment 4 Matt Domsch 2002-07-19 22:53:56 EDT
Apparently there's a partial fix posted at 
http://www.jongans.com/gateway1450.html
with the patch file 1mb-stolen-fix.diff.

Claims to also need a kernel patch and a C program to switch from 8bit to 16bit 
color mode.

Since this is my primary system, I'm quite curious to see this fixed. :-)
Comment 5 Mike A. Harris 2002-07-27 14:26:48 EDT
I've applied the patch to a test build already, which mgalgoci tested
and found did not solve the problem.
Comment 6 Mike A. Harris 2002-07-27 14:27:39 EDT
*** Bug 69974 has been marked as a duplicate of this bug. ***
Comment 7 Matthew Galgoci 2002-08-19 17:37:04 EDT
test, ignore
Comment 8 Need Real Name 2002-08-23 12:24:22 EDT
  Just to point out that this problem also occurs with a Sony PCG-R505DL
(probably several other Sonys as well).

  Also from the diary page above a solution is now mentioned:
http://www.cse.unsw.edu.au/~chak/linux/c400.html

  Hopefully it is useful enough to be used for the next rh release.
Comment 9 Mike A. Harris 2002-11-03 02:22:31 EST
This problem is fixed now in XFree86 CVS.  RPM's are available on my
personal ftp space on people.redhat.com, and will be in rawhide soon
as well.

Closing as RAWHIDE
Comment 10 Michael Lee Yohe 2002-11-14 12:22:20 EST
I installed the RPMs (_ALL_ of them) - it uninstalls Xft-2.0 (and related
packages).  That breaks the ability to run redhat-config-xfree86 (which is
looking for libXft.so.2).
Comment 11 Michael Lee Yohe 2002-11-14 12:33:39 EST
Needs ldconfig - libXft.so.2 moved.
Comment 12 Mike A. Harris 2002-11-14 18:51:14 EST
Xft/Xft2 have absolutely nothing to do with i830 video

This bug is fixed, and confirmed by several people now, including those
in the CC list.

Adding comments to a closed bug report that have nothing to do with the
bug report isn't very useful.
Comment 13 Mike A. Harris 2003-01-17 17:33:55 EST
A few people have asked me privately in email to update this report
to be more detailed as to the resolution.

The i830m stolen memory problem present in Dell and other BIOSs, is
worked around by driver workarounds in the XFree86 CVS development code,
which is available in our latest beta release (phoebe), and will be
present in the next release of Red Hat Linux.
Comment 14 Mike A. Harris 2003-01-18 08:49:48 EST
Adding bug alias "i830" to this issue, so future dupes can be closed
more easily.

Note You need to log in before you can comment on or make changes to this bug.