| Summary: | Boot panic due to missing BIOS smap on install cds (HP dc5750 SFF) | ||
|---|---|---|---|
| Product: | Base System | Reporter: | Eamon Roque <Roque> |
| Component: | amd64 | Assignee: | freebsd-amd64 (Nobody) <amd64> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | Unspecified | ||
| Hardware: | Any | ||
| OS: | Any | ||
|
Description
Eamon Roque
2007-04-20 15:50:02 UTC
Responsible Changed From-To: freebsd-bugs->freebsd-i386 Reclassify. State Changed From-To: open->closed Reclassify due to bad assumption on my part. Also, see amd64/111955 instead. Responsible Changed From-To: freebsd-i386->freebsd-amd64 This problem hit FreeBSD-i836 on the HP dc5750 as well. The 7.0-CURRENT snapshot from May 10th will only find 64 MB out of 1 GB installed. The loader print "BIOS 639/784064 kB" while the Kernel print "real memory = 67108864 (64 MB)". Asking the loader about the SMAP will print an empty line. This is the same with an older 6.2-STABLE. A more recent 6.2-STABLE of May 18th prints the same in the loader, while the kernel print "real memory = 1048576000 (1000 MB)", but the kernel fails to mount the root filesystem. Either automatically or manually provided. I think the cause for that is the on-board video-adapter which uses the system RAM. If I reduce the amount of usable memory by "hw.physmem=803561472" (a value detected by NetBSD on the same machine) in /boot/loader.conf the kernel will boot without a problem. Some remote kernel debugging sessions showed that in the function getmemsize() in /sys/i386/i386/machdep.c the kernel failed to get the memory map with INT 15:E820 and finally uses the RTC value for extended memory. The machine uses the newest system BIOS 786E3 v02.22. Meanwhile I tried the two oldest BIOS for this machine available from HP. Without any success. So, if the problem exists in the BIOS it's there at least since version 1.04 revision A. I also tried the old 4.11 FreeBSD/i386 ISO from the archive. It failed to detect the right amount of memory as well. So, the problem has nothing to with changes in newer versions of FreeBSD. A NetBSD 3.1 Generic MP AMD64 from Oct, 30 2006 detects 894 MB of total memory. Assuming that the loader is an simpler environment than the kernel, I have tried some modifications in different files (btx.S, btxldr.S, biosmem.c, biossmap.c and even biosdisk.c). Either without any success to get an successful SMAP call or even crash the loader. I found, that the loader calls BIOS int 0x15 function 0xe820, which fails, than int 0x12 and int 0x15 function 0xe801, both successfully. The kernel calls int 0x12 successfully, after that int 0x15 function 0xe820, which fails, then int 0x15 function 0xe801, which fails also, and then uses the rtc value. It is interesting that the int 0x15 function 0xe801 call, which succeeded in the loader, fails when called by the kernel. A Linux kernel 2.6.19-gentoo-r5 will boot up fine. Even with showing the smap information and access to the ACPI. A recent FreeBSD 6.2-STABLE will crash in madt_probe() if tried to boot with ACPI enabled. It is the same with a CURRENT dating from 2007-05-29. I have also tried the Linux-ready firmware developer kit release 2 from www.linuxfirmwarekit.org. While booting, it shows the int 0x15 function 0xe820 calls and results. In total it detects 0 MB highmem and 894 MB lowmem, which is the same amount as the NetBSD above. It also shows severeal failures and and warnings, but has access to the ACPI tables without crashing. Best regards, Ralf There is some very little success. Using hint.apic.0.disabled=1 mentioned in the bugs section of acpi(4) let a CURRENT FreeBSD/i386 kernel boot with acpi enabled. There are now some warning messages regarding interrupts and failed memory allocations from the kernel but the power button works as expected now. To disable HPET in the BIOS will fix a hangup while configuring the bge(4) interface by dhclient(8). Best regards, Ralf Hi, I've tried applying this hint (disabling apic) and defining the maxmem from the bootload prompt, but unfortunately, it doesn't boot up at all. The kernel still panics as described originally. Ralf: Are you actually running some sort of FreeBSD on the box already? We seem to have similar boxes with the same BIOS revision... > I've tried applying this hint (disabling apic) and defining the maxmem from > the bootload prompt, but unfortunately, it doesn't boot up at all. The > kernel still panics as described originally. I have just verified this with the 7.0-CURRENT-200706-amd64-disc1.iso version and you are right. Can you try a i386 version please? I know this is not the right categorie (amd64 vs i386) but this was the only thread I found discussing FreeBSD on the HP dc5750. I don't think this is problem is related to i386 or am64. I think it's more related to the BIOS and the different ways FreeBSD, NetBSD and Linux are calling the BIOS. > Ralf: Are you actually running some sort of FreeBSD on the box already? We > seem to have similar boxes with the same BIOS revision... I can build the world and a CURRENT kernel on the machine as well as install and run them. The machine is also able to use our diskless boot environment with some minor extensions in /boot/beastie.4th. We can not get full control over the ATI SB600 HDA controller. There is no output on the rear plug and the internal speaker volume is the same as the front headphone plug. Linux distinguishes between internal speaker and headphone, but there is no output at the rear plug as well. USB mouse and keyboard are detected and functioning. But there is a problem with USB sticks. Depending on the manufacturer (I tried 3 different) the stick is never detected as umass(4) device or there will be umass I/O errors. In any case the operation system will slow down until it is almoust not responding to keyboard (PS2 or USB) activity. Best regards, Ralf Hi, I've tested this on i386 cds as well (up to this month's 6.2-Stable/7.0-Current) without noticing any differences. HTH Eamon Roque > I've tested this on i386 cds as well (up to this month's
> 6.2-Stable/7.0-Current)
> without noticing any differences.
That's interesting. I have just used the 6.2-STABLE-200704 from the
6.2-STABLE-200704-i386-disc1.iso snapshot, escaped to the loader prompt
used "set hint.apic.0.disabled=1", "set hw.physmem=3219454976" (for 4 GB
RAM) and boot up fine. Especially without a kernel crash. The BIOS
version is 78E3 v02.25. There is no additional hardware added.
For 1 GB RAM I had to use "set hw.physmem=803561472".
Best regards, Ralf
Hi, very interesting phenomena. With the Bios Rev. 2.25 I am now able to boot 6.2-STABLE-200706-bootonly for i386 w/out acpi, but not amd64 (with any options enabled/disabled). With the previous Bios version 2.22, also mentioned in the bugreport, this was not possible. With this configuration, I am able to install 6.2-RELEASE (with the requisite bge problems...). HTH -- Eamon Roque IT-Gruppe Geisteswissenschaften Geschwister-Scholl-Platz 1 D-80539 München Telefon: 089/2180-2147 Telefax: 089/2180-13543 Roque@itg.uni-muenchen.de Hi,
as Ralf also said, Linux can read the memory map from the BIOS.
Here's the output from my current system:
Linux version 2.6.21-ARCH (root@firefly) (gcc version 4.2.0) #1 SMP
PREEMPT Tue Jun 12 02:55:15 CEST 2007
Command line: root=/dev/sda6 ro
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e8000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000007feb7f00 (usable)
BIOS-e820: 000000007feb7f00 - 0000000080000000 (reserved)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fec00000 - 00000000fed40000 (reserved)
BIOS-e820: 00000000fed45000 - 0000000100000000 (reserved)
Entering add_active_range(0, 0, 159) 0 entries of 256 used
Entering add_active_range(0, 256, 523959) 1 entries of 256 used
end_pfn_map = 1048576
DMI 2.4 present.
ACPI: RSDP 000E7610, 0014 (r0 COMPAQ)
ACPI: RSDT 7FEC7F40, 0038 (r1 HPQOEM SLIC-BPC 20070518 0)
ACPI: FACP 7FEC7FE8, 0074 (r1 COMPAQ HP_RS485 1 0)
ACPI: DSDT 7FEC8343, 9268 (r1 COMPAQ DSDT_PRJ 1 MSFT 100000E)
ACPI: FACS 7FEC7F00, 0040
ACPI: APIC 7FEC805C, 0068 (r1 COMPAQ HP_RS485 1 0)
ACPI: ASF! 7FEC80C4, 0063 (r32 COMPAQ HP_RS485 1 0)
ACPI: MCFG 7FEC8127, 003C (r1 COMPAQ HP_RS485 1 0)
ACPI: TCPA 7FEC8163, 0032 (r1 COMPAQ HP_RS485 1 0)
Entering add_active_range(0, 0, 159) 0 entries of 256 used
Entering add_active_range(0, 256, 523959) 1 entries of 256 used
No mptable found.
Zone PFN ranges:
DMA 0 -> 4096
DMA32 4096 -> 1048576
Normal 1048576 -> 1048576
early_node_map[2] active PFN ranges
0: 0 -> 159
0: 256 -> 523959
On node 0 totalpages: 523862
DMA zone: 56 pages used for memmap
DMA zone: 1076 pages reserved
DMA zone: 2867 pages, LIFO batch:0
DMA32 zone: 7107 pages used for memmap
DMA32 zone: 512756 pages, LIFO batch:31
Normal zone: 0 pages used for memmap
6-Stable can only see 64MB of this by default. With ACPI enabled, the
kernel panics, just like with the previously mentioned boot cds.
HTH
Eamon Roque
--
Eamon Roque
IT-Gruppe Geisteswissenschaften
Geschwister-Scholl-Platz 1
D-80539 München
Telefon: 089/2180-2147
Telefax: 089/2180-13543
Roque@itg.uni-muenchen.de
|