linux/drivers
Yinghai Lu d6046ed0c0 mm: check if section present during memory block registering
commit 04697858d8 upstream.

Tony Luck found on his setup, if memory block size 512M will cause crash
during booting.

  BUG: unable to handle kernel paging request at ffffea0074000020
  IP: get_nid_for_pfn+0x17/0x40
  PGD 128ffcb067 PUD 128ffc9067 PMD 0
  Oops: 0000 [#1] SMP
  Modules linked in:
  CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.2.0-rc8 #1
  ...
  Call Trace:
     ? register_mem_sect_under_node+0x66/0xe0
     register_one_node+0x17b/0x240
     ? pci_iommu_alloc+0x6e/0x6e
     topology_init+0x3c/0x95
     do_one_initcall+0xcd/0x1f0

The system has non continuous RAM address:
 BIOS-e820: [mem 0x0000001300000000-0x0000001cffffffff] usable
 BIOS-e820: [mem 0x0000001d70000000-0x0000001ec7ffefff] usable
 BIOS-e820: [mem 0x0000001f00000000-0x0000002bffffffff] usable
 BIOS-e820: [mem 0x0000002c18000000-0x0000002d6fffefff] usable
 BIOS-e820: [mem 0x0000002e00000000-0x00000039ffffffff] usable

So there are start sections in memory block not present.  For example:

    memory block : [0x2c18000000, 0x2c20000000) 512M

first three sections are not present.

The current register_mem_sect_under_node() assume first section is
present, but memory block section number range [start_section_nr,
end_section_nr] would include not present section.

For arch that support vmemmap, we don't setup memmap for struct page
area within not present sections area.

So skip the pfn range that belong to absent section.

[akpm@linux-foundation.org: simplification]
[rientjes@google.com: more simplification]
Fixes: bdee237c03 ("x86: mm: Use 2GB memory block size on large memory x86-64 systems")
Fixes: 982792c782 ("x86, mm: probe memory block size for generic x86 64bit")
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: David Rientjes <rientjes@google.com>
Reported-by: Tony Luck <tony.luck@intel.com>
Tested-by: Tony Luck <tony.luck@intel.com>
Cc: Greg KH <greg@kroah.com>
Cc: Ingo Molnar <mingo@elte.hu>
Tested-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2015-09-29 16:44:47 +01:00
..
accessibility printk: move braille console support into separate braille.[ch] files 2013-07-31 14:41:03 -07:00
acpi serial: 8250: bind to ALi Fast Infrared Controller (ALI5123) 2015-09-28 10:21:41 +01:00
amba ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
ata Add factory recertified Crucial M500s to blacklist 2015-09-03 13:29:57 +01:00
atm atm: fore200e.c: Cleaning up uninitialized variables 2014-06-02 17:11:03 -07:00
auxdisplay auxdisplay: ks0108: fix refcount 2015-09-28 10:21:35 +01:00
base mm: check if section present during memory block registering 2015-09-29 16:44:47 +01:00
bcma bcma: gpio: register 32 GPIOs on BCM5357 2014-03-27 14:20:04 -04:00
block xen-blkback: replace work_pending with work_busy in purge_persistent_gnt() 2015-08-31 14:14:06 +01:00
bluetooth Bluetooth: ath3k: Add a new ID 0cf3:e006 to ath3k list 2015-07-20 13:17:08 +01:00
bus bus: omap_l3_noc: Correct returning IRQ_HANDLED unconditionally in the irq handler 2015-02-04 10:57:52 +00:00
cdrom Merge branch 'for-linus' of git://git.kernel.dk/linux-block 2014-06-11 08:41:17 -07:00
char agp/intel: Fix typo in needs_ilk_vtd_wa() 2015-07-15 10:00:58 +01:00
clk clk: exynos4: Fix wrong clock for Exynos4x12 ADC 2015-09-28 10:21:33 +01:00
clocksource clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier 2015-07-15 10:00:56 +01:00
connector Char / misc driver patches for 3.16-rc1 2014-06-03 08:06:56 -07:00
cpufreq intel_pstate: set BYT MSR with wrmsrl_on_cpu() 2015-07-09 14:36:00 +01:00
cpuidle cpuidle: remove state_count field from struct cpuidle_device 2015-04-27 16:16:34 +01:00
crypto crypto: caam - fix memory corruption in ahash_final_ctx 2015-09-03 13:29:51 +01:00
dca dca: convert to idr_alloc() 2013-02-27 19:10:15 -08:00
devfreq PM / devfreq: remove checks for CONFIG_EXYNOS_ASV 2014-05-24 22:33:51 +09:00
dio m68k: don't export static inline functions 2009-12-06 11:18:28 +01:00
dma dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup 2015-07-15 10:00:31 +01:00
edac EDAC, ppc4xx: Access mci->csrows array elements properly 2015-09-03 13:29:51 +01:00
eisa Revert "EISA: Initialize device before its resources" 2014-01-17 14:57:29 -07:00
extcon extcon: palmas: Use devm_extcon_dev_allocate for extcon_dev 2014-04-29 09:52:12 +09:00
firewire firewire: cdev: prevent kernel stack leaking into ioctl arguments 2014-11-27 11:21:52 +00:00
firmware sysfs: Create mountpoints with sysfs_create_mount_point 2015-08-20 18:24:03 +01:00
fmc Merge 3.14-rc5 into char-misc-next 2014-03-02 19:53:09 -08:00
gpio gpio: gpio-kempld: Fix get_direction return value 2015-06-03 13:27:19 +01:00
gpu Add radeon suspend/resume quirk for HP Compaq dc5750. 2015-09-29 16:44:44 +01:00
hid HID: usbhid: Fix the check for HID_RESET_PENDING in hid_io_error 2015-09-28 10:21:45 +01:00
hsi hsi: omap_ssi_port: use normal module refcounting 2014-06-05 00:59:05 +02:00
hv Drivers: hv: vmbus: Don't wait after requesting offers 2015-05-05 11:09:38 +01:00
hwmon hwmon: (mcp3021) Fix broken output scaling 2015-07-15 10:01:09 +01:00
hwspinlock A single patch from Vincent extending OMAP's hwspinlock support to OMAP5. 2013-05-07 14:01:27 -07:00
i2c i2c: at91: fix a race condition when using the DMA controller 2015-07-15 10:00:30 +01:00
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide 2014-07-21 22:44:24 -07:00
idle intel_idle: fix IVT idle state table setting 2014-04-21 23:36:07 +02:00
iio iio: event: Remove negative error code from iio_event_poll 2015-09-28 10:21:38 +01:00
infiniband IB/uverbs: reject invalid or unknown opcodes 2015-09-29 16:44:45 +01:00
input Input: evdev - do not report errors form flush() 2015-09-29 16:44:46 +01:00
iommu iommu/amd: Handle large pages correctly in free_pagetable 2015-07-15 10:00:45 +01:00
ipack ipack: convert bus code to use dev_groups 2013-10-16 18:40:57 -07:00
irqchip irqchip: sunxi-nmi: Fix off-by-one error in irq iterator 2015-06-30 17:15:21 +01:00
isdn isdn/gigaset: reset tty->receive_room when attaching ser_gigaset 2015-08-12 09:48:29 +01:00
leds leds / PM: fix hibernation on arm when gpio-led used with CPU led trigger 2015-07-09 14:36:01 +01:00
lguest lguest: fix out-by-one error in address checking. 2015-06-03 14:30:03 +01:00
macintosh powerpc/macintosh/smu.c: Fix closing brace followed by if 2014-06-24 12:43:15 +10:00
mailbox drivers/mailbox/omap: make mbox->irq signed for error handling 2014-01-23 16:36:53 -08:00
mcb mcb: Add support for shared PCI IRQs 2014-05-27 17:38:11 -07:00
md dm btree: add ref counting ops for the leaves of top level btrees 2015-09-03 13:29:48 +01:00
media [media] rc-core: fix remove uevent generation 2015-09-28 10:21:30 +01:00
memory memory: mvebu-devbus: add a devbus, keep-config property 2014-04-29 13:17:10 +00:00
memstick memstick: mspro_block: add missing curly braces 2015-05-06 11:33:10 +01:00
message mptfusion: enable no_write_same for vmware scsi disks 2014-10-30 09:40:12 -07:00
mfd mfd: arizona: Fix initialisation of the PM runtime 2015-08-31 14:14:06 +01:00
misc mei: make device disabled on stop unconditionally 2015-03-18 15:06:06 +00:00
mmc mmc: sdhci: Fix FSL ESDHC reset handling quirk 2015-08-12 09:48:35 +01:00
mtd mtd: dc21285: use raw spinlock functions for nw_gpio_lock 2015-07-15 10:01:21 +01:00
net tg3: Fix temperature reporting 2015-09-29 16:44:43 +01:00
nfc NFC: microread: Potential overflows in microread_target_discovered() 2014-10-05 13:41:05 -07:00
ntb ntb: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-04-07 10:59:20 -07:00
nubus kernel/printk: use symbolic defines for console loglevels 2014-06-04 16:54:17 -07:00
of of/address: Don't loop forever in of_find_matching_node_by_address(). 2015-09-28 10:21:48 +01:00
oprofile oprofile, nmi-timer: Fix CPU hotplug callback registration 2014-03-20 13:43:46 +01:00
parisc PCI changes for the v3.12 merge window: 2013-09-03 16:24:35 -07:00
parport parport: fix menu breakage 2014-07-25 18:00:23 -07:00
pci PCI: Add VPD function 0 quirk for Intel Ethernet devices 2015-09-28 10:21:32 +01:00
pcmcia Disable write buffering on Toshiba ToPIC95 2015-07-15 10:00:33 +01:00
phy phy: twl4030-usb: remove incorrect pm_runtime_get_sync() in probe function. 2015-07-15 10:01:23 +01:00
pinctrl pinctrl: mvebu: armada-38x: fix incorrect total number of GPIOs 2015-07-15 10:00:30 +01:00
platform ideapad-laptop: Add Lenovo Yoga 3 14 to no_hw_rfkill dmi list 2015-09-28 10:21:37 +01:00
pnp ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage 2015-07-15 10:01:34 +01:00
power power_supply: lp8788-charger: Fix leaked power supply on probe fail 2015-05-04 16:06:35 +01:00
powercap powercap / RAPL: add support for CPU model 0x3f 2015-01-15 10:44:49 +00:00
pps drivers/pps/clients/pps-gpio.c: remove redundant of_match_ptr 2013-11-13 12:09:35 +09:00
ps3 ps3-vuart: don't use PREPARE_WORK 2014-03-07 10:24:48 -05:00
ptp ptp: ptp_pch depends on x86_32 2014-06-17 15:43:48 -07:00
pwm pwm: Fix period and polarity in pwm_get() for non-perfect matches 2014-10-05 13:40:52 -07:00
rapidio rapidio/tsi721_dma: fix failure to obtain transaction descriptor 2014-07-30 17:16:13 -07:00
regulator regulator: pbias: Fix broken pbias disable functionality 2015-09-28 10:21:40 +01:00
remoteproc remoteproc: da8xx: don't select CMA on no-MMU 2014-06-17 17:09:36 +02:00
reset reset: sunxi: fix spinlock initialization 2015-01-22 16:33:34 +00:00
rpmsg A small pull request consisting of: 2013-05-07 14:02:00 -07:00
rtc drivers/rtc/rtc-s5m.c: terminate s5m_rtc_id array with empty element 2015-02-04 10:58:19 +00:00
s390 s390/sclp: fix compile error 2015-09-03 13:30:01 +01:00
sbus bbc-i2c: Fix BBC I2C envctrl on SunBlade 2000 2014-08-14 10:09:44 +08:00
scsi SCSI: Fix NULL pointer dereference in runtime PM 2015-09-03 13:29:56 +01:00
sfi SFI / ACPI: Fix warnings reported during builds with W=1 2013-12-07 01:24:33 +01:00
sh SH Driver Update for v3.16 2014-06-06 11:44:09 -07:00
sn Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
soc soc: qcom: fix of_device_id table 2014-05-26 21:27:09 +02:00
spi spi: fix race freeing dummy_tx/rx before it is unmapped 2015-07-09 14:35:59 +01:00
spmi spmi: pm: drop bus-level PM suspend/resume routines 2014-03-08 22:15:52 -08:00
ssb Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2014-01-30 17:20:32 -08:00
staging staging: comedi: adl_pci7x3x: fix digital output on PCI-7230 2015-09-28 10:21:41 +01:00
target target: REPORT LUNS should return LUN 0 even for dynamic ACLs 2015-08-31 14:14:07 +01:00
tc TC: Handle device_register() errors. 2014-06-26 10:48:23 +01:00
thermal thermal: exynos: Disable the regulator on probe failure 2015-08-27 12:08:09 +01:00
tty serial: 8250: bind to ALi Fast Infrared Controller (ALI5123) 2015-09-28 10:21:41 +01:00
uio Revert "uio: fix vma io range check in mmap" 2014-06-17 16:07:08 -07:00
usb USB: qcserial: add HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module 2015-09-28 10:21:44 +01:00
uwb uwb: init beacon cache entry before registering uwb device 2014-10-05 13:40:58 -07:00
vfio vfio-pci: Fix the check on pci device type in vfio_pci_probe() 2015-01-16 14:34:28 +00:00
vhost vhost: actually track log eventfd file 2015-08-25 10:13:39 +01:00
video video/fbdev: fix defio's fsync 2015-01-16 14:34:19 +00:00
virt drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
virtio virtio_pci: Clear stale cpumask when setting irq affinity 2015-06-30 17:15:20 +01:00
vlynq drivers/vlynq/vlynq.c: fix another resource size off by 1 error 2014-01-23 16:36:55 -08:00
vme vme_tsi148: Utilize to_pci_dev() macro 2014-04-16 14:08:37 -07:00
w1 w1_therm reference count family data 2015-07-09 14:36:07 +01:00
watchdog watchdog: omap: assert the counter being stopped before reprogramming 2015-07-15 10:01:29 +01:00
xen xen/gntdevt: Fix race condition in gntdev_release() 2015-09-03 13:30:02 +01:00
zorro zorro/UAPI: Use proper types (endianness/size) in <linux/zorro.h> 2013-11-26 11:09:09 +01:00
Kconfig soc: Introduce drivers/soc place-holder for SOC specific drivers 2014-05-23 11:37:46 -05:00
Makefile Char / misc driver patches for 3.16-rc1 2014-06-03 08:06:56 -07:00