Browse Prior Art Database

Method to Automatically Clean CAPI Resources

IP.com Disclosure Number: IPCOM000249313D
Publication Date: 2017-Feb-16
Document File: 1 page(s) / 87K

Publishing Venue

The IP.com Prior Art Database

Abstract

Disclosed is a method to automatically clean the Coherent Accelerator POWER Interface (CAPI) contexts following application use. The solution introduces ddpreclose(), a new device switch table entry point for the CAPI device driver.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 71% of the total text.

1

Method to Automatically Clean CAPI Resources

Applications may directly exploit Coherent Accelerator POWER Interface (CAPI) accelerators. Before using an accelerator, the application is required to open the accelerator device (e.g., open("/dev/caccel0", O_RDONLY)). An application may then attach one or more contexts in order to exploit the accelerator. However, an application for various reasons may not detach those contexts (e.g., may close the device without detaching, it may crash without detaching, etc.). In each of these cases, the operating system (OS) needs to automatically clean the CAPI contexts, much as the OS would free-up malloc-ed memory and close open files.

A CAPI context consumes resources in the hardware, in the hypervisor, in the operating system kernel, and in the CAPI device driver. A system cleans up all of these if the application does a detach of the context; however, all should be cleaned up even if the application does not explicitly detach a context.

The novel contribution is a method to automatically clean the CAPI contexts following application use. The solution introduces ddpreclose(), a new device switch table entry point for the CAPI device driver.

Currently, such an entry point does not exist in standard Unix/Linux*. The entry point is called whenever a CAP device is closed. There are several paths in the OS where this entry point may be closed:

1. From the close() system itself where the CAPI accelerator is closed, 2. From exit() when a proc...