On 11/30/23 01:29, Cao, Quanquan/曹 全全 wrote:
>
>> static int action_disable(struct cxl_memdev *memdev, struct action_context
>> *actx)
>> {
>> + struct cxl_endpoint *ep;
>> + struct cxl_port *port;
>> +
>> if (!cxl_memdev_is_enabled(memdev))
>> return 0;
>> - if (!param.force) {
>> - /* TODO: actually detect rather than assume active */
>> + ep = cxl_memdev_get_endpoint(memdev);
>> + if (!ep)
>> + return -ENODEV;
>> +
>> + port = cxl_endpoint_get_port(ep);
>> + if (!port)
>> + return -ENODEV;
>> +
>> + if (cxl_port_decoders_committed(port)) {
>> log_err(&ml, "%s is part of an active region\n",
>> cxl_memdev_get_devname(memdev));
>> - return -EBUSY;
>> + if (!param.force)
>> + return -EBUSY;
>> }
>> return cxl_memdev_disable_invalidate(memdev);
>>
>>
> Hi Dave,
> Do you think adding one more prompt message would be more user-friendly?
Yes good idea. I'll add.
>
> code:
> if (cxl_port_decoders_committed(port)) {
> log_err(&ml, "%s is part of an active region\n",
> cxl_memdev_get_devname(memdev));
> if (!param.force)
> return -EBUSY;
> else
> log_err(&ml,"Forcing memdev disable with an active
> region\n");
> }
>
> output:
> [root@fedora-37-client ndctl]# cxl disable-memdev mem0 -f
> cxl memdev: action_disable: mem0 is part of an active region
> cxl memdev: action_disable: Forcing memdev disable with an active region
> cxl memdev: cmd_disable_memdev: disabled 1 mem
>