We want a supervisor client of NVKM (such as the DRM) to be able to allow sharing of resources (such as memory objects) between clients. To allow this, the supervisor creates all its clients as children of itself, and will use an upcoming ioctl to permit sharing. Currently it's not possible for indirect clients to use subclients. Supporting this will require an additional field in the main ioctl. This isn't important currently, but will need to be fixed for virt. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
28 lines
788 B
C
28 lines
788 B
C
#ifndef __NVIF_CLIENT_H__
|
|
#define __NVIF_CLIENT_H__
|
|
|
|
#include <nvif/object.h>
|
|
|
|
struct nvif_client {
|
|
struct nvif_object object;
|
|
const struct nvif_driver *driver;
|
|
u64 version;
|
|
u8 route;
|
|
bool super;
|
|
};
|
|
|
|
int nvif_client_init(struct nvif_client *parent, const char *name, u64 device,
|
|
struct nvif_client *);
|
|
void nvif_client_fini(struct nvif_client *);
|
|
int nvif_client_ioctl(struct nvif_client *, void *, u32);
|
|
int nvif_client_suspend(struct nvif_client *);
|
|
int nvif_client_resume(struct nvif_client *);
|
|
|
|
/*XXX*/
|
|
#include <core/client.h>
|
|
#define nvxx_client(a) ({ \
|
|
struct nvif_client *_client = (a); \
|
|
(struct nvkm_client *)_client->object.priv; \
|
|
})
|
|
#endif
|