lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Thu, 17 Jan 2008 15:31:51 +0200
From:	"Denys Fedoryshchenko" <denys@...p.net.lb>
To:	Ingo Molnar <mingo@...e.hu>
Cc:	linux-kernel@...r.kernel.org,
	Andrew Morton <akpm@...ux-foundation.org>,
	Thomas Gleixner <tglx@...utronix.de>,
	"H. Peter Anvin" <hpa@...or.com>, Mel Gorman <mel@....ul.ie>
Subject: Re: bugreport kernel panic on early stage, with HIGHMEM4G:

Patch fixes the problem.
Here is dmesg (i cut it, probably remaining part of it not required).
0]   Movable zone: 0 pages used for memmap
[    0.000000] DMI 2.4 present.
[    0.000000] ACPI: RSDP 000FE020, 0014 (r0 INTEL )
[    0.000000] ACPI: RSDT CFEFD038, 0050 (r1 INTEL  DG965SS       6B7       
1000013)
[    0.000000] ACPI: FACP CFEFC000, 0074 (r1 INTEL  DG965SS       6B7 MSFT  
1000013)
[    0.000000] ACPI: DSDT CFEF7000, 41AA (r1 INTEL  DG965SS       6B7 MSFT  
1000013)
[    0.000000] ACPI: FACS CFE9C000, 0040
[    0.000000] ACPI: APIC CFEF6000, 0078 (r1 INTEL  DG965SS       6B7 MSFT  
1000013)
[    0.000000] ACPI: WDDT CFEF5000, 0040 (r1 INTEL  DG965SS       6B7 MSFT  
1000013)
[    0.000000] ACPI: MCFG CFEF4000, 003C (r1 INTEL  DG965SS       6B7 MSFT  
1000013)
[    0.000000] ACPI: ASF! CFEF3000, 00A6 (r32 INTEL  DG965SS       6B7 MSFT  
1000013)
[    0.000000] ACPI: HPET CFEF2000, 0038 (r1 INTEL  DG965SS       6B7 MSFT  
1000013)
[    0.000000] ACPI: SSDT CFE9A000, 020C (r1 INTEL     CpuPm      6B7 MSFT  
1000013)
[    0.000000] ACPI: SSDT CFE99000, 0175 (r1 INTEL   Cpu0Ist      6B7 MSFT  
1000013)
[    0.000000] ACPI: SSDT CFE98000, 0175 (r1 INTEL   Cpu1Ist      6B7 MSFT  
1000013)
[    0.000000] ACPI: SSDT CFE97000, 0175 (r1 INTEL   Cpu2Ist      6B7 MSFT  
1000013)
[    0.000000] ACPI: SSDT CFE96000, 0175 (r1 INTEL   Cpu3Ist      6B7 MSFT  
1000013)
[    0.000000] ACPI: PM-Timer IO Port: 0x408
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
[    0.000000] Processor #0 6:15 APIC version 20
[    0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
[    0.000000] Processor #1 6:15 APIC version 20
[    0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x82] disabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x83] disabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] dfl dfl lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Enabling APIC mode:  Flat.  Using 1 I/O APICs
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] Allocating PCI resources starting at d4000000 (gap: 
d0000000:2ff00000)
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total 
pages: 1040384
[    0.000000] Kernel command line: root=/dev/sdb2
[    0.000000] mapped APIC to ffffb000 (fee00000)
[    0.000000] mapped IOAPIC to ffffa000 (fec00000)
[    0.000000] Enabling fast FPU save and restore... done.
[    0.000000] Enabling unmasked SIMD FPU exception support... done.
[    0.000000] Initializing CPU#0
[    0.000000] PID hash table entries: 4096 (order: 12, 16384 bytes)
[    0.000000] Detected 2397.647 MHz processor.
[   23.770446] Console: colour VGA+ 80x25
[   23.770448] console [tty0] enabled
[   23.779138] Dentry cache hash table entries: 131072 (order: 7, 524288 
bytes)
[   23.779395] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[   23.788992] set_highmem_pages_init(bad_ppro:0)
[   23.789056] sizeof(struct page):        32
[   23.789118] sizeof(struct mem_section): 8
[   23.789180] PFN_SECTION_SHIFT:          14
[   23.789243] mem_map: 00000000
[   23.789304]   highstart_pfn:    229376 [page: c1700700]
[   23.789367]     highend_pfn:   1048576 [page: 02000000]
[   23.789431]   highend_pfn-1:   1048575 [page: 01ffffe0]
[   23.789494] NR_MEM_SECTIONS: 64
[   23.789555] pfn_to_section_nr(highstart_pfn):        14
[   23.789619] pfn_to_section_nr(highend_pfn):          64
[   23.789682] pfn_to_section_nr(highend_pfn-1):        63
[   23.789745] totalhigh_pages:         0
[   23.789807]  totalram_pages:    221519
[   23.924275] WARNING: at arch/x86/mm/init_32.c:353 set_highmem_pages_init()
[   23.924344] Pid: 0, comm: swapper Not tainted 2.6.24-rc8-git1 #1
[   23.924409]  [<c0104fac>] show_trace_log_lvl+0x1a/0x2f
[   23.924503]  [<c0105805>] show_trace+0x12/0x14
[   23.924591]  [<c0105bc1>] dump_stack+0x6c/0x72
[   23.924678]  [<c03ce93e>] mem_init+0x2a7/0x596
[   23.924768]  [<c03c38b6>] start_kernel+0x271/0x2fb
[   23.924858]  [<00000000>] _stext+0x3feff000/0x19
[   23.924945]  =======================
[   23.925007] bad pfn: 851968
[   23.925068] totalhigh_pages:    622129
[   23.925130]  totalram_pages:    221519
[   23.925194] Memory: 3373812k/4194304k available (1990k kernel code, 30976k 
reserved, 813k data, 208k init, 2488516k highmem)
[   23.925300] virtual kernel memory layout:
[   23.925301]     fixmap  : 0xffe15000 - 0xfffff000   (1960 kB)
[   23.925302]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
[   23.925302]     vmalloc : 0xf8800000 - 0xff7fe000   ( 111 MB)
[   23.925303]     lowmem  : 0xc0000000 - 0xf8000000   ( 896 MB)
[   23.925304]       .init : 0xc03c3000 - 0xc03f7000   ( 208 kB)
[   23.925305]       .data : 0xc02f18c5 - 0xc03bcdec   ( 813 kB)
[   23.925305]       .text : 0xc0100000 - 0xc02f18c5   (1990 kB)
[   23.925805] Checking if this processor honours the WP bit even in 
supervisor mode... Ok.
[   23.926109] hpet clockevent registered
[   23.986100] Calibrating delay using timer specific routine.. 4797.85 
BogoMIPS (lpj=2398929)
[   23.986267] Mount-cache hash table entries: 512
[   23.986424] CPU: After generic identify, caps: bfebfbff 20100000 00000000 
00000000 0000e3bd 00000000 00000001 00000000
[   23.986429] monitor/mwait feature present.
[   23.987257] using mwait in idle threads.
[   23.987320] CPU: L1 I cache: 32K, L1 D cache: 32K
[   23.987408] CPU: L2 cache: 4096K
[   23.987470] CPU: Physical Processor ID: 0
[   23.987532] CPU: Processor Core ID: 0
[   23.987594] CPU: After all inits, caps: bfebfbff 20100000 00000000 
00003940 0000e3bd 00000000 00000001 00000000
[   23.987599] Intel machine check architecture supported.
[   23.987664] Intel machine check reporting enabled on CPU#0.
[   23.987729] Compat vDSO mapped to ffffe000.
[   23.987800] Checking 'hlt' instruction... OK.
[   23.991366] SMP alternatives: switching to UP code
[   23.991940] ACPI: Core revision 20070126
[   23.993505] Parsing all Control Methods:
[   23.993595] Table [DSDT](id 0001) - 610 Objects with 62 Devices 154 
Methods 38 Regions
[   23.993793] Parsing all Control Methods:
[   23.993879] Table [SSDT](id 0002) - 10 Objects with 0 Devices 4 Methods 0 
Regions
[   23.994055] Parsing all Control Methods:
[   23.994147] Table [SSDT](id 0003) - 5 Objects with 0 Devices 3 Methods 0 
Regions
[   23.994323] Parsing all Control Methods:
[   23.994408] Table [SSDT](id 0004) - 5 Objects with 0 Devices 3 Methods 0 
Regions
[   23.994584] Parsing all Control Methods:
[   23.994668] Table [SSDT](id 0005) - 5 Objects with 0 Devices 3 Methods 0 
Regions
[   23.994844] Parsing all Control Methods:
[   23.994930] Table [SSDT](id 0006) - 5 Objects with 0 Devices 3 Methods 0 
Regions
[   23.995088]  tbxface-0598 [00] tb_load_namespace     : ACPI Tables 
successfully acquired
[   23.996207] evxfevnt-0091 [00] enable                : Transition to ACPI 
mode successful
[   23.996377] CPU0: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz stepping 
06
[   23.996500] SMP alternatives: switching to SMP code
[   23.996894] Booting processor 1/1 eip 3000
[   24.007645] Initializing CPU#1
[   24.067080] Calibrating delay using timer specific routine.. 4795.20 
BogoMIPS (lpj=2397601)
[   24.067085] CPU: After generic identify, caps: bfebfbff 20100000 00000000 
00000000 0000e3bd 00000000 00000001 00000000
[   24.067089] monitor/mwait feature present.
[   24.067091] CPU: L1 I cache: 32K, L1 D cache: 32K
[   24.067092] CPU: L2 cache: 4096K
[   24.067093] CPU: Physical Processor ID: 0
[   24.067094] CPU: Processor Core ID: 1
[   24.067096] CPU: After all inits, caps: bfebfbff 20100000 00000000 
00003940 0000e3bd 00000000 00000001 00000000
[   24.067100] Intel machine check architecture supported.
[   24.067102] Intel machine check reporting enabled on CPU#1.
[   24.067636] CPU1: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz stepping 
06
[   24.068359] Total of 2 processors activated (9593.06 BogoMIPS).
[   24.068559] ENABLING IO-APIC IRQs
[   24.068778] ..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
[   24.180160] checking TSC synchronization [CPU#0 -> CPU#1]: passed.
[   24.200256] Brought up 2 CPUs
[   24.200332] CPU0 attaching sched-domain:
[   24.200334]  domain 0: span 00000003
[   24.200336]   groups: 00000001 00000002
[   24.200339] CPU1 attaching sched-domain:
[   24.200340]  domain 0: span 00000003
[   24.200341]   groups: 00000002 00000001
[   24.200493] net_namespace: 64 bytes
[   24.200849] NET: Registered protocol family 16
[   24.201014] ACPI: bus type pci registered
[   24.201138] PCI: BIOS Bug: MCFG area at f0000000 is not E820-reserved
[   24.201203] PCI: Not using MMCONFIG.
[   24.202626] PCI: Using configuration type 1
[   24.202688] Setting up standard PCI resources
[   24.209439] evgpeblk-0956 [00] ev_create_gpe_block   : GPE 00 to 1F [_GPE] 
4 regs on int 0x9
[   24.210162] evgpeblk-1052 [00] ev_initialize_gpe_bloc: Found 8 Wake, 
Enabled 4 Runtime GPEs in this block
[   24.210318] ACPI: EC: Look up EC in DSDT
[   24.211574] Completing Region/Field/Buffer/Package 
initialization:........................................................................
[   24.213966] Initialized 32/38 Regions 0/0 Fields 25/25 Buffers 15/35 
Packages (649 nodes)
[   24.214124] Initializing Device/Processor/Thermal objects by executing 
_INI methods:.
[   24.214272] Executed 1 _INI methods requiring 0 _STA executions (examined 
68 objects)
[   24.214443] ACPI: Interpreter enabled
[   24.214506] ACPI: (supports S0 S3 S5)
[   24.214648] ACPI: Using IOAPIC for interrupt routing
[   24.218082] ACPI: PCI Root Bridge [PCI0] (0000:00)
[   24.218839] PCI quirk: region 0400-047f claimed by ICH6 ACPI/GPIO/TCO
[   24.218906] PCI quirk: region 0500-053f claimed by ICH6 GPIO
[   24.219522] PCI: Transparent bridge - 0000:00:1e.0
[   24.219617] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[   24.219888] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P32_._PRT]
[   24.220094] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX0._PRT]
[   24.220180] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX1._PRT]
[   24.220267] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX2._PRT]
[   24.220353] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX3._PRT]
[   24.220438] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX4._PRT]
[   24.224894] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 10 *11 12)
[   24.225280] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 9 *10 11 12)
[   24.225662] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 9 10 *11 12)
[   24.226043] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 9 10 *11 12)
[   24.226428] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 *9 10 11 12)
[   24.226810] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 *10 11 12)
[   24.227191] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 *9 10 11 12)
[   24.227574] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 7 9 10 *11 12)
[   24.227980] Linux Plug and Play Support v0.97 (c) Adam Belay
[   24.228065] pnp: PnP ACPI init
[   24.228131] ACPI: bus type pnp registered
[   24.230140] pnp: PnP ACPI: found 11 devices
[   24.230203] ACPI: ACPI bus type pnp unregistered
[   24.230403] SCSI subsystem initialized
[   24.230493] libata version 3.00 loaded.
[   24.230556] PCI: Using ACPI for IRQ routing
[   24.230619] PCI: If a device doesn't work, try "pci=routeirq".  If it 
helps, post a report
[   24.235340] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[   24.235515] hpet0: 3 64-bit timers, 14318180 Hz
[   24.236603] ACPI: RTC can wake from S4
[   24.237154] Time: tsc clocksource has been installed.
[   24.239432] system 00:01: iomem range 0xf0000000-0xf7ffffff has been 
reserved
[   24.239510] system 00:01: iomem range 0xfed13000-0xfed13fff has been 
reserved
[   24.239576] system 00:01: iomem range 0xfed14000-0xfed17fff has been 
reserved
[   24.239642] system 00:01: iomem range 0xfed18000-0xfed18fff has been 
reserved
[   24.239708] system 00:01: iomem range 0xfed19000-0xfed19fff has been 
reserved
[   24.239773] system 00:01: iomem range 0xfed1c000-0xfed1ffff has been 
reserved
[   24.239839] system 00:01: iomem range 0xfed20000-0xfed3ffff has been 
reserved
[   24.239905] system 00:01: iomem range 0xfed45000-0xfed99fff has been 
reserved
[   24.239971] system 00:01: iomem range 0xc0000-0xdffff could not be reserved
[   24.240036] system 00:01: iomem range 0xe0000-0xfffff could not be reserved
[   24.240106] system 00:06: ioport range 0x500-0x53f has been reserved
[   24.240170] system 00:06: ioport range 0x400-0x47f has been reserved
[   24.240235] system 00:06: ioport range 0x680-0x6ff has been reserved
[   24.270635] PCI: Failed to allocate mem resource #6:20000@...00000 for 
0000:01:00.0
[   24.270735] PCI: Bridge: 0000:00:01.0
[   24.270797]   IO window: 2000-2fff
[   24.270861]   MEM window: e0000000-e1ffffff
[   24.270924]   PREFETCH window: d0000000-dfffffff
[   24.270988] PCI: Bridge: 0000:00:1c.0
[   24.271050]   IO window: disabled.
[   24.271114]   MEM window: disabled.
[   24.271177]   PREFETCH window: disabled.
[   24.271242] PCI: Bridge: 0000:00:1c.1
[   24.271305]   IO window: 1000-1fff
[   24.271369]   MEM window: e2000000-e20fffff
[   24.271435]   PREFETCH window: disabled.
[   24.271499] PCI: Bridge: 0000:00:1c.2
[   24.271561]   IO window: disabled.
[   24.271624]   MEM window: disabled.
[   24.271688]   PREFETCH window: disabled.
[   24.271752] PCI: Bridge: 0000:00:1c.3
[   24.271814]   IO window: disabled.
[   24.271878]   MEM window: disabled.
[   24.271941]   PREFETCH window: disabled.
[   24.272005] PCI: Bridge: 0000:00:1c.4
[   24.272067]   IO window: disabled.
[   24.272130]   MEM window: disabled.
[   24.272193]   PREFETCH window: disabled.
[   24.272258] PCI: Bridge: 0000:00:1e.0
[   24.272319]   IO window: disabled.
[   24.272383]   MEM window: disabled.
[   24.272447]   PREFETCH window: disabled.
[   24.272520] ACPI: PCI Interrupt 0000:00:01.0[A] -> GSI 16 (level, low) -> 
IRQ 16
[   24.272646] PCI: Setting latency timer of device 0000:00:01.0 to 64
[   24.272660] ACPI: PCI Interrupt 0000:00:1c.0[A] -> GSI 17 (level, low) -> 
IRQ 17
[   24.272786] PCI: Setting latency timer of device 0000:00:1c.0 to 64
[   24.272800] ACPI: PCI Interrupt 0000:00:1c.1[B] -> GSI 16 (level, low) -> 
IRQ 16
[   24.272925] PCI: Setting latency timer of device 0000:00:1c.1 to 64
[   24.272939] ACPI: PCI Interrupt 0000:00:1c.2[C] -> GSI 18 (level, low) -> 
IRQ 18
[   24.273065] PCI: Setting latency timer of device 0000:00:1c.2 to 64
[   24.273079] ACPI: PCI Interrupt 0000:00:1c.3[D] -> GSI 19 (level, low) -> 
IRQ 19
[   24.273204] PCI: Setting latency timer of device 0000:00:1c.3 to 64
[   24.273217] ACPI: PCI Interrupt 0000:00:1c.4[A] -> GSI 17 (level, low) -> 
IRQ 17
[   24.273343] PCI: Setting latency timer of device 0000:00:1c.4 to 64
[   24.273351] PCI: Setting latency timer of device 0000:00:1e.0 to 64
[   24.273370] NET: Registered protocol family 2
[   24.283667] IP route cache hash table entries: 32768 (order: 5, 131072 
bytes)
[   24.283894] TCP established hash table entries: 131072 (order: 8, 1048576 
bytes)
[   24.284300] TCP bind hash table entries: 65536 (order: 7, 786432 bytes)
[   24.284563] TCP: Hash tables configured (established 131072 bind 65536)
[   24.284634] TCP reno registered
[   24.288032] Machine check exception polling timer started.
[   24.288271] IA-32 Microcode Update Driver: v1.14a 
<tigran@...azian.fsnet.co.uk>
[   24.288744] highmem bounce pool size: 64 pages
[   24.288809] Total HugeTLB memory allocated, 0
[   24.289015] Block layer SCSI generic (bsg) driver version 0.4 loaded 
(major 254)
[   24.289115] io scheduler noop registered
[   24.289188] io scheduler cfq registered (default)
[   24.289542] Boot video device is 0000:01:00.0
[   24.289613] PCI: Setting latency timer of device 0000:00:01.0 to 64



On Tue, 15 Jan 2008 12:39:47 +0100, Ingo Molnar wrote
> * Denys Fedoryshchenko <denys@...p.net.lb> wrote:
> 
> > Hi
> > 
> > After physical memory upgrade from 3GB to 4GB (also it happens on 5GB) 
> > got kernel panic.
> > 
> > Because it is happening on early stage and my machine doesn't contain 
> > serial port, i had to take photo. Kernel boots fine with 64GB highmem, 
> > no highmem, or highmem4G with limited memory by mem=3G. All dmesg 
> > attached. Also i attach dmidecode and lspci -vvv output, probably it 
> > will be useful.
> 
> thanks for the detailed report, i think i know what's going on. 
> Could you try the patch below, does it fix your problem?
> 
> this seems to be a SPARSEMEM bug which is present in v2.6.23 as well 
> and has probably been present ever since SPARSEMEM was added to 32-
> bit x86.
> 
> There's a ~256MB hole in your e820 memory map (the pci aperture),
>  which causes the last 4 sparsemem sections (each covering 64MB of 
> RAM) to be not present - and they are thus missing from the 
> sparsemem mem_map[] too. The highmem init code on the other hand 
> assumes that all pages are in the mem_map[]:
> 
>  static void __init set_highmem_pages_init(int bad_ppro)
>  {
>         int pfn;
>         for (pfn = highstart_pfn; pfn < highend_pfn; pfn++)
>                 add_one_highpage_init(pfn_to_page(pfn), pfn, 
> bad_ppro);
> 
> the pfn_to_page() is unconditional and dereferences to a NULL-ish 
> pointer which crashes your box. highend_pfn is what got 
> miscalculated by 256 MB, so set_highmem_pages_init() tried to 
> reference a non-existing struct page - but it should still be robust 
> enough against non-existent pages.
> 
> The patch below fixes this bug. Please also send a dmesg if you 
> manage to boot the box up fine, i've added a few debug printouts to 
> confirm this theory. (i'll figure out whether we need to clip 
> highend_pfn as well - but this patch alone should be good enough to 
> fix the crash on your box.)
> 
> 	Ingo
> 
> ------------->
> Subject: x86: fix CONFIG_SPARSEMEM highmem init bug
> From: Ingo Molnar <mingo@...e.hu>
> 
> fix CONFIG_SPARSEMEM highmem init bug.
> 
> Signed-off-by: Ingo Molnar <mingo@...e.hu>
> ---
>  arch/x86/mm/init_32.c |   43 
> ++++++++++++++++++++++++++++++++++++++++--- mm/sparse.c           |  
>   8 +++++++- 2 files changed, 47 insertions(+), 4 deletions(-)
> 
> Index: linux/arch/x86/mm/init_32.c
> ===================================================================
> --- linux.orig/arch/x86/mm/init_32.c
> +++ linux/arch/x86/mm/init_32.c
> @@ -321,11 +321,48 @@ extern void set_highmem_pages_init(int);
>  static void __init set_highmem_pages_init(int bad_ppro)
>  {
>  	int pfn;
> -	for (pfn = highstart_pfn; pfn < highend_pfn; pfn++)
> -		add_one_highpage_init(pfn_to_page(pfn), pfn, bad_ppro);
> +
> +	printk("set_highmem_pages_init(bad_ppro:%d)\n", bad_ppro);
> +	printk("sizeof(struct page):        %d\n", sizeof(struct page));
> +	printk("sizeof(struct mem_section): %d\n", sizeof(struct 
> mem_section)); +	printk("PFN_SECTION_SHIFT:          %d\n",
>  PFN_SECTION_SHIFT); + +	printk("mem_map: %p\n", mem_map); +	
> printk("  highstart_pfn: %9ld [page: %p]\n", +		
highstart_pfn, 
> pfn_to_page(highstart_pfn)); +	printk("    highend_pfn: %9ld [page: 
> %p]\n", +		highend_pfn, pfn_to_page(highend_pfn)); +	
printk("  
> highend_pfn-1: %9ld [page: %p]\n", +		highend_pfn-1, 
> pfn_to_page(highend_pfn-1)); + +	printk("NR_MEM_SECTIONS: %ld\n",
>  NR_MEM_SECTIONS); +	printk("pfn_to_section_nr(highstart_pfn): 
> %9ld\n", +		pfn_to_section_nr(highstart_pfn)); +	
> printk("pfn_to_section_nr(highend_pfn):   %9ld\n", +	
> 	pfn_to_section_nr(highend_pfn)); +	
> printk("pfn_to_section_nr(highend_pfn-1): %9ld\n", +	
> 	pfn_to_section_nr(highend_pfn-1)); + +	printk("totalhigh_pages: 
> %9ld\n", totalhigh_pages); +	printk(" totalram_pages: %9ld\n", 
> totalram_pages); + +	for (pfn = highstart_pfn; pfn < highend_pfn; 
> pfn++) { +		if (pfn_valid(pfn)) +		
> 	add_one_highpage_init(pfn_to_page(pfn), pfn, bad_ppro); +	
	else { +	
> 		if (WARN_ON_ONCE(1)) { +				
printk("bad pfn: %d\n", pfn); +				break;
> +			}
> +		}
> +	}
> +	printk("totalhigh_pages: %9ld\n", totalhigh_pages);
> +	printk(" totalram_pages: %9ld\n", totalram_pages);
> +
> +
>  	totalram_pages += totalhigh_pages;
>  }
> -#endif /* CONFIG_FLATMEM */
> +#endif /* CONFIG_NUMA */
> 
>  #else
>  #define kmap_init() do { } while (0)
> Index: linux/mm/sparse.c
> ===================================================================
> --- linux.orig/mm/sparse.c
> +++ linux/mm/sparse.c
> @@ -295,9 +295,13 @@ void __init sparse_init(void)
>  	struct page *map;
>  	unsigned long *usemap;
> 
> +	printk("sparse_init()\n");
>  	for (pnum = 0; pnum < NR_MEM_SECTIONS; pnum++) {
> -		if (!present_section_nr(pnum))
> +		printk("section %2ld: ", pnum);
> +		if (!present_section_nr(pnum)) {
> +			printk("!present\n");
>  			continue;
> +		}
> 
>  		map = sparse_early_mem_map_alloc(pnum);
>  		if (!map)
> @@ -309,6 +313,8 @@ void __init sparse_init(void)
> 
>  		sparse_init_one_section(__nr_to_section(pnum), pnum, map,
>  								usemap);
> +		printk("map: %p, usemap: %p [content: %08lx]\n",
> +			map, usemap, __nr_to_section(pnum)->section_mem_map);
>  	}
>  }


--
Denys Fedoryshchenko
Technical Manager
Virtual ISP S.A.L.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ