int __ref add_memory_resource(int nid, struct resource *res, mhp_t mhp_flags)
 {
        struct mhp_params params = { .pgprot = pgprot_mhp(PAGE_KERNEL) };
+       enum memblock_flags memblock_flags = MEMBLOCK_NONE;
        struct vmem_altmap mhp_altmap = {};
        struct memory_group *group = NULL;
        u64 start, size;
        mem_hotplug_begin();
 
        if (IS_ENABLED(CONFIG_ARCH_KEEP_MEMBLOCK)) {
-               ret = memblock_add_node(start, size, nid, MEMBLOCK_NONE);
+               if (res->flags & IORESOURCE_SYSRAM_DRIVER_MANAGED)
+                       memblock_flags = MEMBLOCK_DRIVER_MANAGED;
+               ret = memblock_add_node(start, size, nid, memblock_flags);
                if (ret)
                        goto error_mem_hotplug_end;
        }