On 10/26/21 12:05 PM, Oleksandr Tyshchenko wrote:
+static void unpopulated_init(void)
+{
+       static bool inited = false;
+       int ret;
+
+       if (inited)
+               return;
+
+       /*
+        * Try to initialize Xen resource the first and fall back to default
+        * resource if arch doesn't offer one.
+        */
+       ret = arch_xen_unpopulated_init(&xen_resource);
+       if (!ret)
+               target_resource = &xen_resource;
+       else if (ret == -ENOSYS)
+               target_resource = &iomem_resource;
+       else
+               pr_err("Cannot initialize Xen resource\n");


I'd pass target_resource as a parameter to arch_xen_unpopulated_init() instead. 
Default routine will assign it iomem_resource and you won't have to deal with 
-ENOSYS.


Also, what happens in case of error? Is it fatal? I don't think your changes in 
fill_list() will work.


+
+       inited = true;


I agree with Stefano in that it would be better to call this from an init 
function, and you won't have t worry about multiple calls here.


-boris

Reply via email to