|
@@ -1751,6 +1751,14 @@ int soft_offline_page(struct page *page, int flags)
|
|
|
int ret;
|
|
|
unsigned long pfn = page_to_pfn(page);
|
|
|
|
|
|
+ if (is_zone_device_page(page)) {
|
|
|
+ pr_debug_ratelimited("soft_offline: %#lx page is device page\n",
|
|
|
+ pfn);
|
|
|
+ if (flags & MF_COUNT_INCREASED)
|
|
|
+ put_page(page);
|
|
|
+ return -EIO;
|
|
|
+ }
|
|
|
+
|
|
|
if (PageHWPoison(page)) {
|
|
|
pr_info("soft offline: %#lx page already poisoned\n", pfn);
|
|
|
if (flags & MF_COUNT_INCREASED)
|