From: kernel test robot <lkp@intel.com>
To: Gregory Price <gourry@gourry.net>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: [gourryinverse:scratch/gourry/cxl/compression/file_cleancache 85/98] mm/cram.c:785:9: error: call to undeclared function 'add_private_memory_driver_managed'; ISO C99 and later do not support implicit function declarations
Date: Sat, 11 Jul 2026 01:37:46 +0800 [thread overview]
Message-ID: <202607110149.Brcg1dl7-lkp@intel.com> (raw)
tree: https://github.com/gourryinverse/linux scratch/gourry/cxl/compression/file_cleancache
head: bcd0bfca5b64d6cbb5aadb07554b9bd218e0df85
commit: b91721666fdaddeaac4caa01b7f220f13ad984d6 [85/98] mm/cram: core compressed-RAM tier API
config: sparc64-allmodconfig (https://download.01.org/0day-ci/archive/20260711/202607110149.Brcg1dl7-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260711/202607110149.Brcg1dl7-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202607110149.Brcg1dl7-lkp@intel.com/
All errors (new ones prefixed by >>):
>> mm/cram.c:785:9: error: call to undeclared function 'add_private_memory_driver_managed'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
785 | ret = add_private_memory_driver_managed(nid, ranges[i].start,
| ^
>> mm/cram.c:787:5: error: use of undeclared identifier 'MHP_MERGE_RESOURCE'
787 | MHP_MERGE_RESOURCE, MMOP_ONLINE_MOVABLE, &cn->np);
| ^
2 errors generated.
vim +/add_private_memory_driver_managed +785 mm/cram.c
711
712 /**
713 * cram_register() - donate physical region(s) to CRAM as a private node
714 * @nid: target NUMA node
715 * @ranges: perceived physical regions to donate (struct range, end-inclusive)
716 * @n: number of ranges
717 * @zratio: hw compression ratio, per-mille N:1 (3:1 => 3000, 1:1 => 1000)
718 * @ops: driver callbacks. ops.owner (= THIS_MODULE) pins the module for
719 * the node's lifetime. Stored by value.
720 * @driver_data: the driver's per-node object, the ops callback cookie and np
721 * owner. Opaque to CRAM (keyed operations use @nid).
722 *
723 * CRAM owns the node lifecycle. It hotplugs each range as an N_MEMORY_PRIVATE
724 * node (caps = CRAM_NP_CAPS, backed by &cn->np), onlines movable, and starts
725 * kswapd for LRU aging / writeback. The driver does no hotplug of its own.
726 *
727 * Return: 0 on success. -errno on failure (nothing left onlined on failure).
728 */
729 int cram_register(int nid, const struct range *ranges, unsigned int n,
730 u32 zratio, struct cram_ops ops, void *driver_data)
731 {
732 struct cram_node *cn;
733 unsigned int i, added = 0;
734 int ret;
735
736 if (!cram_valid_nid(nid) || !ranges || !n)
737 return -EINVAL;
738
739 /* Pin the driver module for the node's lifetime (NULL = built-in). */
740 if (!try_module_get(ops.owner))
741 return -EBUSY;
742
743 cn = kzalloc(sizeof(*cn), GFP_KERNEL);
744 if (!cn) {
745 ret = -ENOMEM;
746 goto err_module;
747 }
748 cn->ranges = kmemdup(ranges, n * sizeof(*ranges), GFP_KERNEL);
749 if (!cn->ranges) {
750 ret = -ENOMEM;
751 goto err_free;
752 }
753 cn->nr_ranges = n;
754 cn->zratio = zratio;
755 cn->current_ratio = zratio; /* assume configured ratio until reported */
756 cn->alloc_allowed = true; /* demotions permitted until the driver revokes */
757 cn->ops = ops;
758 cn->driver_data = driver_data;
759 cn->nid = nid;
760 cn->np.owner = driver_data;
761 cn->np.caps = CRAM_NP_CAPS;
762 refcount_set(&cn->refcount, 1);
763 INIT_WORK(&cn->wmark_work, cram_wmark_work_fn);
764 INIT_WORK(&cn->promote_work, cram_promote_work_fn);
765 spin_lock_init(&cn->promote_lock);
766 INIT_LIST_HEAD(&cn->balloon_pages);
767 mutex_init(&cn->balloon_mutex);
768
769 mutex_lock(&cram_mutex);
770
771 /* Accretion / re-register onto an existing node is not yet supported. */
772 if (cram_nodes[nid]) {
773 mutex_unlock(&cram_mutex);
774 ret = -EBUSY;
775 goto err_ranges;
776 }
777
778 /*
779 * CRAM owns the node. Hotplug each range as a private node (the first
780 * call node_private_register()s &cn->np) and online it movable. On a
781 * failure roll back the ranges already added (fresh/empty, so the atomic
782 * ranges-offline succeeds).
783 */
784 for (i = 0; i < n; i++) {
> 785 ret = add_private_memory_driver_managed(nid, ranges[i].start,
786 range_len(&ranges[i]), "System RAM (cram)",
> 787 MHP_MERGE_RESOURCE, MMOP_ONLINE_MOVABLE, &cn->np);
788 if (ret) {
789 if (added)
790 offline_and_remove_memory_ranges(cn->ranges, added);
791 mutex_unlock(&cram_mutex);
792 goto err_ranges;
793 }
794 added++;
795 }
796
797 /*
798 * Publish the control node first, then arm the CRAM mask last. Once
799 * node_is_cram() / cram_pick_node() observe the node, cram_nodes[nid] is
800 * already valid. Teardown clears the mask first, the mirror image.
801 */
802 static_branch_inc(&cram_enabled);
803 rcu_assign_pointer(cram_nodes[nid], cn);
804 node_set(nid, cram_node_mask);
805
806 /* Start kswapd on the private node for LRU aging and writeback */
807 kswapd_run(nid);
808
809 mutex_unlock(&cram_mutex);
810 return 0;
811
812 err_ranges:
813 kfree(cn->ranges);
814 err_free:
815 kfree(cn);
816 err_module:
817 module_put(ops.owner);
818 return ret;
819 }
820 EXPORT_SYMBOL_GPL(cram_register);
821
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-07-10 17:38 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202607110149.Brcg1dl7-lkp@intel.com \
--to=lkp@intel.com \
--cc=gourry@gourry.net \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox