Take a look at our
ThinkPads.com HOME PAGE
For those who might want to contribute to the blog, start here: Editors Alley Topic
Then contact Bill with a Private Message

Why 3.0GB, not 3.25 or even 3.5? [Updated with Answer]

T60/T61 series specific matters only
Message
Author
liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

Why 3.0GB, not 3.25 or even 3.5? [Updated with Answer]

#1 Post by liyifan » Fri Jun 22, 2007 1:04 am

Dear all,

I know the 4gb issue has been brought up so many times that you probably don't want to hear it any more. But I seem to have some new observations and I hope someone in the HW or driver design fields will help us get the whole thing clear.

Before I begin please allow me to give a brief summary of what I've learned on the 4GB issue so far:
1. We are bound to loose some memory in the 3-4GB zone (as well as small amounts in the lower range) because hardware devices need to use addresses for communicating with their drivers. Once an address range is assigned to a device the same address cannot be used for memory.
2. The 945 chipset used by T60 and T60P are 32bit, which means no matter what there is only 4GB address range available for all hardware (including the memory chip).
3. In light of 2, PAE and 64-bit OS will not help. They will only help if the system is capable of addressing more than 4GB.

Now here comes my question:

Who's the one that dictates that we shall have only 3.0GB (3070MB in my case and some other members) available?

The reason I'm asking this:

If you open up the device manager (open command prompt and type in start devmgmt.msc) and go to View->Resources by Connection, then expand the Memory node, you will find out who's claiming what addresses.
In my case, I have a big chunk from C0000000-FEBFFFFF reserved by PCI bus. This is basically the 1GB memory that has been missing. Now, when I look at its subnodes which enumerate the PCI devices such display adapter, audio, network adapter and so on, the total amount of address spaces they claim does not add up to 1GB. As a matter of fact they only took around 500MB.
So where's my other 500MB? When I looked at the property of the PCI bus device I found out that under the resource tab the memory range C0000000-FEBFFFFF has been marked as unavailable.

This I cannot understand. While all my devices only take up 500MB of address space, why would the whole 4th GB be marked as unavailable? Had this not been the case the OS would have reported 3.5GB wouldn't it? If the PCI bus has to reserve a contiguous space why can't it reserve a smaller amount?

If my assumption is correct then the next question is - who should I blame? If it is a bios issue will Lenovo ever fix it? Or can we somehow override this behavior?

Please enlighten me.

------------------Updates 2--------------------
So I've answered my own question as the posts progress. Putting it in a simple way:
There is a system variable (TOLUD) that determines the upper limit of USABLE memory. This value of the variable is set to 3GB in BIOS for T60(p)s. Unless this is changed NO MATTER WHAT (including any OS or switch configuration) you cannot have more than 3GB of usable memory. The reason why it is set as such is not clear but I personally believe that it is possible for Lenovo to set it to a slightly higher value (say 3.25GB or even 3.5GB<not sure, but if you don't have any PCI-E device?>), depending upon your particular configuration. Again, for reasons stated earlier you will never get full 4GB, period.

--------------------Updates 1----------------------
Please see here:
http://blogs.conchango.com/jameshayes/default.aspx

Dell has issued a bios update allowing 3.25GB available. So I guess Lenovo could do the same.
Last edited by liyifan on Sun Jun 24, 2007 3:44 am, edited 4 times in total.
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

larsv
Posts: 19
Joined: Thu Apr 19, 2007 7:46 pm
Location: Palo Alto, California, USA
Contact:

#2 Post by larsv » Fri Jun 22, 2007 1:45 am

Not a Lenovo-specific issue. Same thing on the Macbooks (might have been resolved with the latest revision of the Pro's). It's the hardware / chipset platform that limits the use of memory to approx 3 GB. Supposedly resolved on T61 although others will have to verify that.
T61 7664-16U T7300 Nvidia Quatro 140M Mem 2GB Robson 1GB 14" WXGA+ BT Intel 4965AGN

tomh009
Moderator Emeritus
Moderator Emeritus
Posts: 3021
Joined: Wed Feb 23, 2005 3:30 pm
Location: Kitchener, ON

Re: Why 3.0GB, not 3.25 or even 3.5?

#3 Post by tomh009 » Fri Jun 22, 2007 5:16 am

liyifan wrote:This I cannot understand. While all my devices only take up 500MB of address space, why would the whole 4th GB be marked as unavailable? Had this not been the case the OS would have reported 3.5GB wouldn't it? If the PCI bus has to reserve a contiguous space why can't it reserve a smaller amount?

If my assumption is correct then the next question is - who should I blame? If it is a bios issue will Lenovo ever fix it? Or can we somehow override this behavior?
The memory requirements are dictated by the chipset and the specific (Lenovo) chipset implementation. Alas, I suspect that the chipset designers didn't think using 3.5 GB (rather than 3 GB) of memory would be important to notebook users, so they took the easy route and used the whole upper gigabyte.

I think it's extremely unlikely that you would see a BIOS fix to address this issue. The real fix is called "Santa Rosa".
X220 (4287-2W5, Windows 8 Pro) / X31 (2672-CXU, XP Pro) / X61s (7668-CTO, Windows 8 Pro)

barrywohl
Junior Member
Junior Member
Posts: 445
Joined: Tue Mar 06, 2007 8:01 am
Location: Sheridan, WY
Contact:

#4 Post by barrywohl » Fri Jun 22, 2007 6:09 am

I KNOW I'm missing something in this discussion.

If the hardware takes up a gigabyte on a 4 gb system so that Windows only reports 3 gb; why doesn't the hardware take up a gigabyte on a 2 gigabyte system so that Windows only reports 1 gb?

And, more importantly for me, how much RAM can Windows Vista Business or Ultimate 32 bit use with a T61 with 4 gb of ram?

I have been planning 3 gb when I order a T61, but, I'd buy 4 if Vista Ultimate 32bit could use it.

I know that Vista Ultimate 32 bit permits migrating to 64 bit later, Later, for me, would be about a year, when all the 64 bit drivers are solid.
First Thinkpad 755CX in 1995. First IBM: PC 1982 8088 w 64K RAM, dual floppy. Currently in use:
X230T with Win8Pro x64, i7, 500gb ssd; W700 WUXGA RAID 1 Blu-Ray W7Pro x64, occasionally a T61p with Win7Pro x64

tomh009
Moderator Emeritus
Moderator Emeritus
Posts: 3021
Joined: Wed Feb 23, 2005 3:30 pm
Location: Kitchener, ON

#5 Post by tomh009 » Fri Jun 22, 2007 6:59 am

barrywohl wrote:If the hardware takes up a gigabyte on a 4 gb system so that Windows only reports 3 gb; why doesn't the hardware take up a gigabyte on a 2 gigabyte system so that Windows only reports 1 gb?
It doesn't take up actual memory; it takes up address space. So if those memory addresses are used for I/O, they cannot be used for memory. And thus the system is only able to address 3 GB.
barrywohl wrote:And, more importantly for me, how much RAM can Windows Vista Business or Ultimate 32 bit use with a T61 with 4 gb of ram? I have been planning 3 gb when I order a T61, but, I'd buy 4 if Vista Ultimate 32bit could use it.
32-bit Vista will be able to use about 3 GB. If you are planning a 64-bit migration later, you could buy 4 GB now, but it'll probably be more cost-effective to buy 3 GB now and then bump your system later (when memory is cheaper, too).
X220 (4287-2W5, Windows 8 Pro) / X31 (2672-CXU, XP Pro) / X61s (7668-CTO, Windows 8 Pro)

barrywohl
Junior Member
Junior Member
Posts: 445
Joined: Tue Mar 06, 2007 8:01 am
Location: Sheridan, WY
Contact:

#6 Post by barrywohl » Fri Jun 22, 2007 7:11 am

tomh009 wrote: It doesn't take up actual memory; it takes up address space. So if those memory addresses are used for I/O, they cannot be used for memory. And thus the system is only able to address 3 GB

32-bit Vista will be able to use about 3 GB. If you are planning a 64-bit migration later, you could buy 4 GB now, but it'll probably be more cost-effective to buy 3 GB now and then bump your system later (when memory is cheaper, too).
Thank you! I've got it now. I'll probably order with 2GB and Vista Ultimate 32 now and then upgrade to Vista Ultimate 64 bit and 4 gb with 800 Mhz ram in a year or so.
First Thinkpad 755CX in 1995. First IBM: PC 1982 8088 w 64K RAM, dual floppy. Currently in use:
X230T with Win8Pro x64, i7, 500gb ssd; W700 WUXGA RAID 1 Blu-Ray W7Pro x64, occasionally a T61p with Win7Pro x64

Pocket Aces
Sophomore Member
Posts: 245
Joined: Thu May 31, 2007 5:37 am
Location: Glen Rock, NJ

#7 Post by Pocket Aces » Fri Jun 22, 2007 7:39 am


barrywohl
Junior Member
Junior Member
Posts: 445
Joined: Tue Mar 06, 2007 8:01 am
Location: Sheridan, WY
Contact:

#8 Post by barrywohl » Fri Jun 22, 2007 8:20 am

Pocket Aces wrote:Try reading this
Excellent! I read the whole thing and understood almost all of it.

Of course it helps that my first home pc was an IBM PC with version A of the motherboard (16Kb ram soldered in, 48Kb ram socketed in, 8KB BIOS, 32Kb cassette BASIC), and I read the Byte interview with Bill Gates discussing how no one would ever need more than 640KB of RAM. And I bought a 512 KB board (with two serial ports) for $1350 somewhere around June, 1982.

Two or three GB will be fine for my starting point with my new T61p.
First Thinkpad 755CX in 1995. First IBM: PC 1982 8088 w 64K RAM, dual floppy. Currently in use:
X230T with Win8Pro x64, i7, 500gb ssd; W700 WUXGA RAID 1 Blu-Ray W7Pro x64, occasionally a T61p with Win7Pro x64

axiom
Freshman Member
Posts: 100
Joined: Sat Mar 24, 2007 9:34 am
Location: Toronto, Canada

Re: Why 3.0GB, not 3.25 or even 3.5?

#9 Post by axiom » Fri Jun 22, 2007 10:20 am

This is a very educated question. I would like to know the answer too.

Since you have the resource(4GB) already, could you try disabling most, if not all, the features in BIOS and the boot up with a newest Linux live CD see if the addressed physical memory still being exactly 3GB?

Thanks,
liyifan wrote:Dear all,

I know the 4gb issue has been brought up so many times that you probably don't want to hear it any more. But I seem to have some new observations and I hope someone in the HW or driver design fields will help us get the whole thing clear.

Before I begin please allow me to give a brief summary of what I've learned on the 4GB issue so far:
1. We are bound to loose some memory in the 3-4GB zone (as well as small amounts in the lower range) because hardware devices need to use addresses for communicating with their drivers. Once an address range is assigned to a device the same address cannot be used for memory.
2. The 945 chipset used by T60 and T60P are 32bit, which means no matter what there is only 4GB address range available for all hardware (including the memory chip).
3. In light of 2, PAE and 64-bit OS will not help. They will only help if the system is capable of addressing more than 4GB.

Now here comes my question:

Who's the one that dictates that we shall have only 3.0GB (3070MB in my case and some other members) available?

The reason I'm asking this:

If you open up the device manager (open command prompt and type in start devmgmt.msc) and go to View->Resources by Connection, then expand the Memory node, you will find out who's claiming what addresses.
In my case, I have a big chunk from C0000000-FEBFFFFF reserved by PCI bus. This is basically the 1GB memory that has been missing. Now, when I look at its subnodes which enumerate the PCI devices such display adapter, audio, network adapter and so on, the total amount of address spaces they claim does not add up to 1GB. As a matter of fact they only took around 500MB.
So where's my other 500MB? When I looked at the property of the PCI bus device I found out that under the resource tab the memory range C0000000-FEBFFFFF has been marked as unavailable.

This I cannot understand. While all my devices only take up 500MB of address space, why would the whole 4th GB be marked as unavailable? Had this not been the case the OS would have reported 3.5GB wouldn't it? If the PCI bus has to reserve a contiguous space why can't it reserve a smaller amount?

If my assumption is correct then the next question is - who should I blame? If it is a bios issue will Lenovo ever fix it? Or can we somehow override this behavior?

Please enlighten me.

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#10 Post by liyifan » Fri Jun 22, 2007 11:47 am

Yes I've read the Ask Dan article however it does not resolve my question. I wish I could post a picture... The picture in that article also has a line that shows PCI bus reserving the 1GB between C0000000-FEBFFFFF so I sort of suspect that he's having a similar situation (but I'm not sure since his picture is not complete).

OK let me rephrase my problem. The PCI bus reserves 1GB, which by far exceeds for the 500MB required by all the devices on that bus (at least in my case, those of you who are interested in this issue could take a look at the device manager following my original post. All you have to do is to see if there's any discontinuity in your memory map. For example, my first PCI device (ATI) uses D0000000-DFFFFFFF, and there goes 256MB wasted right there between C0000000 and CFFFFFFF.)

Going back to Tom's comments, as I said, from the OS's point of view the reason that the whole GB was invisible is because there is one line in PCI bus's resource list that explicitly demands C0000000-FEBFFFFF unavailable (double click on PCI bus and go to the resources tab). Now as far as I know the PCI bus does not have to do this, unless Lenovo has designed the hardware in such a way that memory in this address is not physically connected.

And to Axiom, I've tried all that to no avail before I discovered that the memory range is marked as unavailable. In short, no matter how few stuff you have it doesn't help, all because of that line. I encourage you to see that. Oh BTW I've tried a 64-bit Ubuntu too... 3GB sharp, although I couldn't know whether it's exactly because of the same issue because I don't get to see the same line. However from what hwinfo tells me it sounds like so.
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

SHoTTa35
ThinkPadder
ThinkPadder
Posts: 1597
Joined: Tue May 29, 2007 6:20 pm
Location: Wash, DC
Contact:

#11 Post by SHoTTa35 » Fri Jun 22, 2007 12:20 pm

that's weird about the 3GB sharp. Do you have 64bit hardware? Only the core 2 duos are 64bit as well as the Athlon 64 ofcourse. If you don't have 64bit hardware then it'll be the same issue with memory addressing.

shalliday
Freshman Member
Posts: 108
Joined: Wed Feb 14, 2007 1:53 pm
Location: St. John's, NL
Contact:

#12 Post by shalliday » Fri Jun 22, 2007 12:52 pm

SHoTTa35 wrote:that's weird about the 3GB sharp. Do you have 64bit hardware? Only the core 2 duos are 64bit as well as the Athlon 64 ofcourse. If you don't have 64bit hardware then it'll be the same issue with memory addressing.
Does all Core 2 Duos 64bit?

I have a T60p 2.33 gigahertz Intel Core 2 Duo with 64 kilobyte primary memory cache and 4096 kilobyte secondary memory cache. Does this mean it can run a 64bit operating system such as the 64bit version of Vista?
T500 T9900@3.06GHz | Win7 64 | 8Gb | 300Gb SSD | 15.4” WSXGA+ | 802.11bgn | BT | Blueray
T60p T7600@2.33GHz | Win7 64 | 4Gb | 120Gb SSD | 15” UXGA | V5250 | 802.11bgn | BT
V570 i5-2410M@2.3GHz | 15.6" | Win 7 64 | 6Gb | 640Gb 5400 | 802.11bgn
X31 1.6GHz | WinXP | 2Gb | 100Gb 7200 | 802.11bg

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#13 Post by liyifan » Fri Jun 22, 2007 12:54 pm

Yes yours is 64-bit. However I don't think that there is any particular benefit running x64 OS on T60p.
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

shalliday
Freshman Member
Posts: 108
Joined: Wed Feb 14, 2007 1:53 pm
Location: St. John's, NL
Contact:

#14 Post by shalliday » Fri Jun 22, 2007 12:57 pm

Sounds like having the 64bit T60p vs the 32bit is of no "real" advantage and is just another waste of money. Much like having 4gigs of RAM installed :)
T500 T9900@3.06GHz | Win7 64 | 8Gb | 300Gb SSD | 15.4” WSXGA+ | 802.11bgn | BT | Blueray
T60p T7600@2.33GHz | Win7 64 | 4Gb | 120Gb SSD | 15” UXGA | V5250 | 802.11bgn | BT
V570 i5-2410M@2.3GHz | 15.6" | Win 7 64 | 6Gb | 640Gb 5400 | 802.11bgn
X31 1.6GHz | WinXP | 2Gb | 100Gb 7200 | 802.11bg

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#15 Post by liyifan » Fri Jun 22, 2007 1:04 pm

SHoTTa35 wrote:that's weird about the 3GB sharp. Do you have 64bit hardware? Only the core 2 duos are 64bit as well as the Athlon 64 ofcourse. If you don't have 64bit hardware then it'll be the same issue with memory addressing.
Yes I have T7200. But please see my original post explaining why 64-bit CPU / OS does not help in this case.

Most importantly, my point is to find out how to minimize my loss while recognizing the issue with 32-bit architecture. Most discussion on the web stops when somebody concludes that 'OK, this is an issue with 32-bit architecture, you lose address space'. AFIK 64-bit systems suffer from the same problem unless the bios could remap the memory.

But what I would like to ask is 'Why make me lose 1GB when all I have to lose is 500MB?'
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

axiom
Freshman Member
Posts: 100
Joined: Sat Mar 24, 2007 9:34 am
Location: Toronto, Canada

#16 Post by axiom » Fri Jun 22, 2007 1:06 pm

To liyifan:
Here is the io memory table for my T60p

00000000-0009efff : System RAM
00000000-00000000 : Crash kernel
0009f000-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000cffff : Video ROM
000d0000-000d0fff : Adapter ROM
000d1000-000d1fff : Adapter ROM
000d2000-000d3fff : reserved
000f0000-000fffff : System ROM
00100000-7fecffff : System RAM
00100000-00308f34 : Kernel code
00308f35-003b9053 : Kernel data
7fed0000-7fedefff : ACPI Tables
7fedf000-7fefffff : ACPI Non-volatile Storage
7ff00000-7fffffff : reserved
88000000-8bffffff : PCI CardBus #16
d0000000-dfffffff : PCI Bus #01
d0000000-dfffffff : 0000:01:00.0
d0000000-d0ffffff : vesafb
e0000000-e3ffffff : PCI Bus #15
e0000000-e3ffffff : PCI CardBus #16
e4000000-e40fffff : PCI Bus #03
e4100000-e41fffff : PCI Bus #04
e4200000-e42fffff : PCI Bus #0c
e4300000-e7ffffff : PCI Bus #15
e4300000-e4300fff : 0000:15:00.0
e4300000-e4300fff : yenta_socket
e8000000-e9ffffff : PCI Bus #04
ea000000-ebffffff : PCI Bus #0c
ec000000-edffffff : PCI Bus #03
edf00000-edf00fff : 0000:03:00.0
edf00000-edf00fff : ipw3945
ee000000-ee0fffff : PCI Bus #02
ee000000-ee01ffff : 0000:02:00.0
ee100000-ee1fffff : PCI Bus #01
ee100000-ee10ffff : 0000:01:00.0
ee120000-ee13ffff : 0000:01:00.0
ee400000-ee403fff : 0000:00:1b.0
ee400000-ee403fff : ICH HD audio
ee404000-ee4043ff : 0000:00:1d.7
ee404000-ee4043ff : ehci_hcd
ee404400-ee4047ff : 0000:00:1f.2
ee404400-ee4047ff : ahci
f0000000-f3ffffff : reserved
fec00000-fec0ffff : reserved
fed00000-fed003ff : HPET 0
fed14000-fed19fff : reserved
fed1c000-fed8ffff : reserved
fee00000-fee00fff : reserved
ff800000-ffffffff : reserved


There are some blocks being reserved as you see, but between those reserved blocks, you see there are some gaps in between going wasted, if somehow we can get rid of the 4 reserved blocks, then we should be able to claim back ~500mb ram?

axiom
Freshman Member
Posts: 100
Joined: Sat Mar 24, 2007 9:34 am
Location: Toronto, Canada

#17 Post by axiom » Fri Jun 22, 2007 1:21 pm

liyifan wrote:'Why make me lose 1GB when all I have to lose is 500MB?'
I am guessing an answer to be:

This Lenovo BIOS "statically" allocates addresses for its functions instead of doing it dynamically. Hence addresses are reserved a priori regardless of they are actually being used or not. If this is the answer, then I don't know why it's done like that. Maybe it's more stable to the system to do it this way?

Potentially some BIOS hacking can free up those reserved blocks at the end.

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#18 Post by liyifan » Fri Jun 22, 2007 1:36 pm

axiom wrote:To liyifan:
...

There are some blocks being reserved as you see, but between those reserved blocks, you see there are some gaps in between going wasted, if somehow we can get rid of the 4 reserved blocks, then we should be able to claim back ~500mb ram?
Axiom,

I'm not running linux right now but your situation seems to be a bit different than mine. What is the command that you use to produce this list? I'm not familiar with linux. Please let me know the command and I can run it later today to compare the results.

Here's what I have on windows (simplified and combined, with some little regions omitted).

00000000-BFFFFFFF: Memory

C0000000-FEBFFFFF: PCI Bus
>D0000000-DFFFFFFF: PCI Express Root Port 27A1 / ATI FireGL 5250
>E4000000-EE1FFFFF: Additional PCI-E Root Ports
>EE400000-EE4047FF: Some additional PCI Devices
>F0000000-F3FFFFFF: Motherboard Resources
>FE3FF000-FEBFFFFF: Cardbus Controller and 82801 PCI Bridge

....

Now, if you pay attention to what is under PCI Bus you will see that they are: A) not contiguous, and B) do not fill the entire region of C0000000-FEBFFFFF, because the first do not start until D0000000. So what makes the entire C0000000-FEBFFFFF range unavailable is one line specified in the 'Resources' tab of PCI Bus, which explicitly says so.
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#19 Post by liyifan » Fri Jun 22, 2007 1:42 pm

BTW for those of you who are interested but don't know how to deal with the hexidecimal numbers, open your calculator application in windows, go to View->Scientific, then click on the 'Hex' radio button. There you can put in those numbers and minus two numbers to get the size of the range, then click on the 'Dec' radio button to see the size in 10-base.
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

SHoTTa35
ThinkPadder
ThinkPadder
Posts: 1597
Joined: Tue May 29, 2007 6:20 pm
Location: Wash, DC
Contact:

#20 Post by SHoTTa35 » Fri Jun 22, 2007 1:53 pm

ok well the RAM on your video card has to be allocated (256MB) there and then there's your hardware.

What i think Lenovo does since it's a laptop and not a "closed" environment they as someone said above allocate a certain amount of the RAM out of the total 4GB for possible hardware that might be there. Even if it's not plugged in at the time imagine how pee'd off you'd be if you bought something and plugged it in and it wont work because all the addressing space has already been used up? That wouldn't go so well for Lenovo/IBM.

That should also help answering someone's question above saying how come it doesn't take 1GB from my 2GB of RAM. The fact is that whether or not you installed 4GB of RAM Windows has the capacity to address that much. So if you have 2GB installed it still has another 2GB capacity. You're thinking it's using the RAM to do this, which is incorrect.

Here's a better way to explain it - You have a book, 4 pages (small book i know :) ) The table of contents and the contents are all that's there. If the table of contents takes up 2 pages then you only have 2 pages left to actually use to write (store) information. What i think Lenovo does is that they just allocate 1 page for themselves no matter what is actually written in the book, like a work in progress. You know what could be in the book but it's not actually there yet but eventually it could/will be there.

Now for 64Bit Operating System (Vista, XP and the others) they have more pages (actually 16TB but Microsoft limits it to 64GB i think) So when Lenovo takes 1GB (1 page) There's still another 60 pages left for information.

axiom
Freshman Member
Posts: 100
Joined: Sat Mar 24, 2007 9:34 am
Location: Toronto, Canada

#21 Post by axiom » Fri Jun 22, 2007 2:06 pm

I think I messed up my calculation in my previous posts, nevermind them.

00000000 - ffffffff seems to translate into 512MBytes.

If that is the case, then there is somehow 512MBytes have gone missing.

ps. the io memory table is located in /proc/iomem in linux

edited:
I can't do math, someone come tell me how much is 00000000-ffffffff in bytes please
Last edited by axiom on Fri Jun 22, 2007 2:18 pm, edited 1 time in total.

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#22 Post by liyifan » Fri Jun 22, 2007 2:13 pm

It's nice to see so many comments here, let's keep it rolling so that we can eventually get things clear.

All PNP devices (and that's pretty much all devices by now) report to the OS which address range(s) they want, and the OS more often than not can ask them to choose a different set of addresses if they support such operation. So there is no need for a static pre-allocated area.

However I like the book analogy. Yes now all of us have a 4-page book. If you only have 2 gigs of ram you are writing on the first 2 pages 'RAM', leaving the other 2 available for your devices to write on.

Of course what I don't like is that Lenovo decided to prevent me from writing 'RAM' on the last page where only half of that page has text (device) on it. I would like to find a way to overwrite this protection.
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#23 Post by liyifan » Fri Jun 22, 2007 3:07 pm

OK, just booted Ubuntu 64-bit and found something new. Here's what dmesg reports:

[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
[ 0.000000] BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000d2000 - 00000000000d4000 (reserved)
[ 0.000000] BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 00000000bfed0000 (usable)
[ 0.000000] BIOS-e820: 00000000bfed0000 - 00000000bfedf000 (ACPI data)
[ 0.000000] BIOS-e820: 00000000bfedf000 - 00000000bff00000 (ACPI NVS)
[ 0.000000] BIOS-e820: 00000000bff00000 - 00000000c0000000 (reserved)
[ 0.000000] BIOS-e820: 00000000f0000000 - 00000000f4000000 (reserved)
[ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
[ 0.000000] BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved)
[ 0.000000] BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved)
[ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed90000 (reserved)
[ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[ 0.000000] BIOS-e820: 00000000ff800000 - 0000000100000000 (reserved)

So what if bios could report c0000000-cfffffff or dfffffff as usable? I could have an additional 256/512 MB.

Does anybody know if you could override the RAM-map?


To Axiom:
You can't do anything with the reserved, what stands a chance is the addresses that are not mapped to anything (i.e. not to device but not to ram either).



Oh and here's my iomem:

00000000-0009efff : System RAM
00000000-00000000 : Crash kernel
0009f000-0009ffff : reserved
000c0000-000c3fff : pnp 00:00
000c4000-000c7fff : pnp 00:00
000c8000-000cbfff : pnp 00:00
000d2000-000d3fff : reserved
000dc000-000fffff : reserved
00100000-bfecffff : System RAM
00200000-00435ea5 : Kernel code
00435ea6-0055c19f : Kernel data
bfed0000-bfedefff : ACPI Tables
bfedf000-bfefffff : ACPI Non-volatile Storage
bff00000-bfffffff : reserved
c4000000-c7ffffff : PCI CardBus #16
d0000000-dfffffff : PCI Bus #01
d0000000-dfffffff : 0000:01:00.0
e0000000-e3ffffff : PCI Bus #15
e0000000-e3ffffff : PCI CardBus #16
e4000000-e40fffff : PCI Bus #03
e4100000-e41fffff : PCI Bus #04
e4200000-e42fffff : PCI Bus #0c
e4300000-e7ffffff : PCI Bus #15
e4300000-e4300fff : 0000:15:00.0
e4300000-e4300fff : yenta_socket
e8000000-e9ffffff : PCI Bus #04
ea000000-ebffffff : PCI Bus #0c
ec000000-edffffff : PCI Bus #03
edf00000-edf00fff : 0000:03:00.0
edf00000-edf00fff : ipw3945
ee000000-ee0fffff : PCI Bus #02
ee000000-ee01ffff : 0000:02:00.0
ee100000-ee1fffff : PCI Bus #01
ee100000-ee10ffff : 0000:01:00.0
ee120000-ee13ffff : 0000:01:00.0
ee400000-ee403fff : 0000:00:1b.0
ee400000-ee403fff : ICH HD audio
ee404000-ee4043ff : 0000:00:1d.7
ee404000-ee4043ff : ehci_hcd
ee404400-ee4047ff : 0000:00:1f.2
ee404400-ee4047ff : ahci
f0000000-f3ffffff : reserved
fec00000-fec0ffff : reserved
fec00000-fec00fff : IOAPIC 0
fed00000-fed003ff : HPET 0
fed14000-fed19fff : reserved
fed1c000-fed8ffff : reserved
fee00000-fee00fff : Local APIC
ff800000-ffffffff : reserved
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

axiom
Freshman Member
Posts: 100
Joined: Sat Mar 24, 2007 9:34 am
Location: Toronto, Canada

#24 Post by axiom » Fri Jun 22, 2007 5:20 pm

liyifan:

could you show me your /proc/mtrr too?
Apparently a user-defined RAM map to overrid the BIOS one through e820 is possible, I am looking into it.

kulivontot
Sophomore Member
Posts: 232
Joined: Thu Mar 30, 2006 9:01 pm

#25 Post by kulivontot » Fri Jun 22, 2007 5:30 pm

There should be a freaking sticky about the 4 GB problem. There are too many ignorant people who think they know better than everyone else and want to try it anyway.

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#26 Post by liyifan » Fri Jun 22, 2007 5:38 pm

Guess what, I think finally sort-of figured out what's going on.

Lets first take a look at this:
http://www.polywell.com/us/support/faq/4GB_Rev1.pdf
See section 4.1.5

It seems to me the T60s have their TOLM PCI configuration registers set at 3GB sharp, and according to that document the memory above TOLM will not be decoded into memory.

So maybe we should look into changing the TOLM at system boot?

Anyway, here's the mtrr:

reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg01: base=0x80000000 (2048MB), size=1024MB: write-back, count=1
reg02: base=0xbff00000 (3071MB), size= 1MB: uncachable, count=1
reg03: base=0xd0000000 (3328MB), size= 16MB: write-combining, count=1
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#27 Post by liyifan » Fri Jun 22, 2007 5:43 pm

kulivontot wrote:There should be a freaking sticky about the 4 GB problem. There are too many ignorant people who think they know better than everyone else and want to try it anyway.
Please take a bit of time and educate the ignorant. When too many people are raising the same question it basically means:

A. The brilliant [censored] it up.
B. They failed to explain properly to the ignorant how they [censored] it up.

The history of PC is full of stupid mistakes... Need me to name a few?

Now, I would greatly appreciate it (honestly) if you can enlighten me on the subject I'm posting.
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

axiom
Freshman Member
Posts: 100
Joined: Sat Mar 24, 2007 9:34 am
Location: Toronto, Canada

#28 Post by axiom » Fri Jun 22, 2007 5:51 pm

+1
liyifan wrote:
kulivontot wrote:There should be a freaking sticky about the 4 GB problem. There are too many ignorant people who think they know better than everyone else and want to try it anyway.
Please take a bit of time and educate the ignorant. When too many people are raising the same question it basically means:

A. The brilliant [censored] it up.
B. They failed to explain properly to the ignorant how they [censored] it up.

The history of PC is full of stupid mistakes... Need me to name a few?

Now, I would greatly appreciate it (honestly) if you can enlighten me on the subject I'm posting.

axiom
Freshman Member
Posts: 100
Joined: Sat Mar 24, 2007 9:34 am
Location: Toronto, Canada

#29 Post by axiom » Fri Jun 22, 2007 6:05 pm

liyifan wrote: It seems to me the T60s have their TOLM PCI configuration registers set at 3GB sharp, and according to that document the memory above TOLM will not be decoded into memory.
Does that mean a simple ram table remapping won't work? since the block you want to utilize is above the 3gb point

00000000c0000000 - 00000000f0000000

ps. Could you try passing "mem=3400MB" in as a boot paremeter after the kernel?

liyifan
Posts: 30
Joined: Wed Jun 20, 2007 10:40 pm
Location: Edmonton, Alberta, Canada

#30 Post by liyifan » Fri Jun 22, 2007 6:28 pm

Axiom: Yes it seems so if you read that document. But again I'm just guessing about the TOLM thing, and even if I'm right TOLM is not unchangeable. I'm reading through the 945 chipset documentation right now and hopefully I'll understand better after that.


To everyone else who happen to be reading this:

If you how this limitation (3GB sharp) is set in place please take a few moments to describe it, or even drop a pointer. If you happen to know somebody in Lenovo or in the hardware design field in general please kindly propagate this message.

It's not that I'm stupid enough to have ignored all the warnings about the limitation and bought 4GB anyway. I actually called IBM support twice, once being told that vista can do 4GB (probably he's just reading off http://www-307.ibm.com/pc/support/site. ... MIGR-55644 , the other time being told that they are working on the issue and asking me to call back in a few weeks. Plus, I figured that all the stuff in T60 couldn't have taken up a whole GB and I might be able to use somewhere between 3.25-3.5, which isn't too bad...
T60P, T7200, 4GB, FireGL 5250, 3945ABG, nice little baby.

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “ThinkPad T6x Series”

Who is online

Users browsing this forum: No registered users and 17 guests