forked from Minki/linux
staging: unisys: Switch to use new generic UUID API
There are new types and helpers that are supposed to be used in new code. As a preparation to get rid of legacy types and API functions do the conversion here. While here, re-indent couple of lines to increase readability. Cc: David Kershner <david.kershner@unisys.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: sparmaintainer@unisys.com Cc: devel@driverdev.osuosl.org Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: David Kershner <david.kershner@unisys.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ab61097c76
commit
b32c5cb84f
@ -221,7 +221,7 @@ The following files exist under /sys/devices/visorbus<x>/vbus<x>:dev<y>:
|
||||
|
||||
The visorhba driver registers with visorbus as the function driver to
|
||||
handle virtual scsi disk devices, specified using the
|
||||
VISOR_VHBA_CHANNEL_UUID type in the visorbus_register_visor_driver()
|
||||
VISOR_VHBA_CHANNEL_GUID type in the visorbus_register_visor_driver()
|
||||
call. visorhba uses scsi_add_host() to expose a Linux block device
|
||||
(e.g., /sys/block/) in the guest environment for each s-Par virtual device.
|
||||
|
||||
@ -240,7 +240,7 @@ When compiled as a module, visorhba can be autoloaded by visorbus in
|
||||
standard udev/systemd environments, as it includes the modules.alias
|
||||
definition:
|
||||
|
||||
"visorbus:"+VISOR_VHBA_CHANNEL_UUID_STR
|
||||
"visorbus:"+VISOR_VHBA_CHANNEL_GUID_STR
|
||||
|
||||
i.e.:
|
||||
|
||||
@ -252,7 +252,7 @@ i.e.:
|
||||
|
||||
The visornic driver registers with visorbus as the function driver to
|
||||
handle virtual network devices, specified using the
|
||||
VISOR_VNIC_CHANNEL_UUID type in the visorbus_register_visor_driver()
|
||||
VISOR_VNIC_CHANNEL_GUID type in the visorbus_register_visor_driver()
|
||||
call. visornic uses register_netdev() to expose a Linux device of class net
|
||||
(e.g., /sys/class/net/) in the guest environment for each s-Par virtual
|
||||
device.
|
||||
@ -270,7 +270,7 @@ When compiled as a module, visornic can be autoloaded by visorbus in
|
||||
standard udev/systemd environments, as it includes the modules.alias
|
||||
definition:
|
||||
|
||||
"visorbus:"+VISOR_VNIC_CHANNEL_UUID_STR
|
||||
"visorbus:"+VISOR_VNIC_CHANNEL_GUID_STR
|
||||
|
||||
i.e.:
|
||||
|
||||
@ -282,7 +282,7 @@ i.e.:
|
||||
|
||||
The visorinput driver registers with visorbus as the function driver to
|
||||
handle human input devices, specified using the
|
||||
VISOR_KEYBOARD_CHANNEL_UUID and VISOR_MOUSE_CHANNEL_UUID
|
||||
VISOR_KEYBOARD_CHANNEL_GUID and VISOR_MOUSE_CHANNEL_GUID
|
||||
types in the visorbus_register_visor_driver() call. visorinput uses
|
||||
input_register_device() to expose devices of class input
|
||||
(e.g., /sys/class/input/) for virtual keyboard and virtual mouse devices.
|
||||
@ -307,8 +307,8 @@ When compiled as a module, visorinput can be autoloaded by visorbus in
|
||||
standard udev/systemd environments, as it includes the modules.alias
|
||||
definition:
|
||||
|
||||
"visorbus:"+VISOR_MOUSE_CHANNEL_UUID_STR
|
||||
"visorbus:"+VISOR_KEYBOARD_CHANNEL_UUID_STR
|
||||
"visorbus:"+VISOR_MOUSE_CHANNEL_GUID_STR
|
||||
"visorbus:"+VISOR_KEYBOARD_CHANNEL_GUID_STR
|
||||
|
||||
i.e.:
|
||||
|
||||
|
@ -128,13 +128,13 @@ struct channel_header {
|
||||
u32 header_size;
|
||||
u64 size;
|
||||
u64 features;
|
||||
uuid_le chtype;
|
||||
guid_t chtype;
|
||||
u64 partition_handle;
|
||||
u64 handle;
|
||||
u64 ch_space_offset;
|
||||
u32 version_id;
|
||||
u32 partition_index;
|
||||
uuid_le zone_uuid;
|
||||
guid_t zone_guid;
|
||||
u32 cli_str_offset;
|
||||
u32 cli_state_boot;
|
||||
u32 cmd_state_cli;
|
||||
@ -204,23 +204,20 @@ struct signal_queue_header {
|
||||
|
||||
/* CHANNEL Guids */
|
||||
/* {414815ed-c58c-11da-95a9-00e08161165f} */
|
||||
#define VISOR_VHBA_CHANNEL_UUID \
|
||||
UUID_LE(0x414815ed, 0xc58c, 0x11da, \
|
||||
0x95, 0xa9, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f)
|
||||
static const uuid_le visor_vhba_channel_uuid = VISOR_VHBA_CHANNEL_UUID;
|
||||
#define VISOR_VHBA_CHANNEL_UUID_STR \
|
||||
#define VISOR_VHBA_CHANNEL_GUID \
|
||||
GUID_INIT(0x414815ed, 0xc58c, 0x11da, \
|
||||
0x95, 0xa9, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f)
|
||||
#define VISOR_VHBA_CHANNEL_GUID_STR \
|
||||
"414815ed-c58c-11da-95a9-00e08161165f"
|
||||
/* {8cd5994d-c58e-11da-95a9-00e08161165f} */
|
||||
#define VISOR_VNIC_CHANNEL_UUID \
|
||||
UUID_LE(0x8cd5994d, 0xc58e, 0x11da, \
|
||||
0x95, 0xa9, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f)
|
||||
static const uuid_le visor_vnic_channel_uuid = VISOR_VNIC_CHANNEL_UUID;
|
||||
#define VISOR_VNIC_CHANNEL_UUID_STR \
|
||||
#define VISOR_VNIC_CHANNEL_GUID \
|
||||
GUID_INIT(0x8cd5994d, 0xc58e, 0x11da, \
|
||||
0x95, 0xa9, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f)
|
||||
#define VISOR_VNIC_CHANNEL_GUID_STR \
|
||||
"8cd5994d-c58e-11da-95a9-00e08161165f"
|
||||
/* {72120008-4AAB-11DC-8530-444553544200} */
|
||||
#define VISOR_SIOVM_UUID \
|
||||
UUID_LE(0x72120008, 0x4AAB, 0x11DC, \
|
||||
0x85, 0x30, 0x44, 0x45, 0x53, 0x54, 0x42, 0x00)
|
||||
static const uuid_le visor_siovm_uuid = VISOR_SIOVM_UUID;
|
||||
#define VISOR_SIOVM_GUID \
|
||||
GUID_INIT(0x72120008, 0x4AAB, 0x11DC, \
|
||||
0x85, 0x30, 0x44, 0x45, 0x53, 0x54, 0x42, 0x00)
|
||||
|
||||
#endif
|
||||
|
@ -562,7 +562,7 @@ struct iochannel_vnic {
|
||||
/* 4 bytes */
|
||||
u32 mtu;
|
||||
/* 16 bytes */
|
||||
uuid_le zone_uuid;
|
||||
guid_t zone_guid;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
|
@ -58,7 +58,7 @@ struct visorchipset_state {
|
||||
* GUID, name, and sizes.
|
||||
*/
|
||||
struct visor_channeltype_descriptor {
|
||||
const uuid_le guid;
|
||||
const guid_t guid;
|
||||
const char *name;
|
||||
};
|
||||
|
||||
@ -141,14 +141,14 @@ struct visor_driver {
|
||||
* hypervisor requests.
|
||||
* @vbus_hdr_info: A pointer to header info. Private use by bus
|
||||
* driver.
|
||||
* @partition_uuid: Indicates client partion id. This should be the
|
||||
* @partition_guid: Indicates client partion id. This should be the
|
||||
* same across all visor_devices in the current
|
||||
* guest. Private use by bus driver only.
|
||||
*/
|
||||
|
||||
struct visor_device {
|
||||
struct visorchannel *visorchannel;
|
||||
uuid_le channel_type_guid;
|
||||
guid_t channel_type_guid;
|
||||
/* These fields are for private use by the bus driver only. */
|
||||
struct device device;
|
||||
struct list_head list_all;
|
||||
@ -161,18 +161,18 @@ struct visor_device {
|
||||
u32 chipset_bus_no;
|
||||
u32 chipset_dev_no;
|
||||
struct visorchipset_state state;
|
||||
uuid_le inst;
|
||||
guid_t inst;
|
||||
u8 *name;
|
||||
struct controlvm_message_header *pending_msg_hdr;
|
||||
void *vbus_hdr_info;
|
||||
uuid_le partition_uuid;
|
||||
guid_t partition_guid;
|
||||
struct dentry *debugfs_dir;
|
||||
struct dentry *debugfs_client_bus_info;
|
||||
};
|
||||
|
||||
#define to_visor_device(x) container_of(x, struct visor_device, device)
|
||||
|
||||
int visor_check_channel(struct channel_header *ch, uuid_le expected_uuid,
|
||||
int visor_check_channel(struct channel_header *ch, const guid_t *expected_guid,
|
||||
char *chname, u64 expected_min_bytes,
|
||||
u32 expected_version, u64 expected_signature);
|
||||
|
||||
@ -211,7 +211,7 @@ int visorchannel_signalremove(struct visorchannel *channel, u32 queue,
|
||||
int visorchannel_signalinsert(struct visorchannel *channel, u32 queue,
|
||||
void *msg);
|
||||
bool visorchannel_signalempty(struct visorchannel *channel, u32 queue);
|
||||
uuid_le visorchannel_get_uuid(struct visorchannel *channel);
|
||||
const guid_t *visorchannel_get_guid(struct visorchannel *channel);
|
||||
|
||||
#define BUS_ROOT_DEVICE UINT_MAX
|
||||
struct visor_device *visorbus_get_device_by_id(u32 bus_no, u32 dev_no,
|
||||
|
@ -20,9 +20,9 @@
|
||||
#include "channel.h"
|
||||
|
||||
/* {2B3C2D10-7EF5-4ad8-B966-3448B7386B3D} */
|
||||
#define VISOR_CONTROLVM_CHANNEL_UUID \
|
||||
UUID_LE(0x2b3c2d10, 0x7ef5, 0x4ad8, \
|
||||
0xb9, 0x66, 0x34, 0x48, 0xb7, 0x38, 0x6b, 0x3d)
|
||||
#define VISOR_CONTROLVM_CHANNEL_GUID \
|
||||
GUID_INIT(0x2b3c2d10, 0x7ef5, 0x4ad8, \
|
||||
0xb9, 0x66, 0x34, 0x48, 0xb7, 0x38, 0x6b, 0x3d)
|
||||
|
||||
#define CONTROLVM_MESSAGE_MAX 64
|
||||
|
||||
@ -261,8 +261,8 @@ struct controlvm_packet_device_create {
|
||||
u32 dev_no;
|
||||
u64 channel_addr;
|
||||
u64 channel_bytes;
|
||||
uuid_le data_type_uuid;
|
||||
uuid_le dev_inst_uuid;
|
||||
guid_t data_type_guid;
|
||||
guid_t dev_inst_guid;
|
||||
struct irq_info intr;
|
||||
} __packed;
|
||||
|
||||
@ -372,8 +372,8 @@ struct controlvm_message_packet {
|
||||
u32 dev_count;
|
||||
u64 channel_addr;
|
||||
u64 channel_bytes;
|
||||
uuid_le bus_data_type_uuid;
|
||||
uuid_le bus_inst_uuid;
|
||||
guid_t bus_data_type_guid;
|
||||
guid_t bus_inst_guid;
|
||||
} __packed create_bus;
|
||||
struct {
|
||||
u32 bus_no;
|
||||
@ -591,7 +591,7 @@ struct visor_controlvm_parameters_header {
|
||||
u32 client_length;
|
||||
u32 name_offset;
|
||||
u32 name_length;
|
||||
uuid_le id;
|
||||
guid_t id;
|
||||
u32 revision;
|
||||
/* Natural alignment */
|
||||
u32 reserved;
|
||||
|
@ -30,9 +30,9 @@
|
||||
#include "channel.h"
|
||||
|
||||
/* {193b331b-c58f-11da-95a9-00e08161165f} */
|
||||
#define VISOR_VBUS_CHANNEL_UUID \
|
||||
UUID_LE(0x193b331b, 0xc58f, 0x11da, \
|
||||
0x95, 0xa9, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f)
|
||||
#define VISOR_VBUS_CHANNEL_GUID \
|
||||
GUID_INIT(0x193b331b, 0xc58f, 0x11da, \
|
||||
0x95, 0xa9, 0x0, 0xe0, 0x81, 0x61, 0x16, 0x5f)
|
||||
|
||||
/*
|
||||
* Must increment this whenever you insert or delete fields within this channel
|
||||
@ -43,8 +43,6 @@
|
||||
*/
|
||||
#define VISOR_VBUS_CHANNEL_VERSIONID 1
|
||||
|
||||
static const uuid_le visor_vbus_channel_uuid = VISOR_VBUS_CHANNEL_UUID;
|
||||
|
||||
/* struct visor_vbus_deviceinfo
|
||||
* @devtype: Short string identifying the device type.
|
||||
* @drvname: Driver .sys file name.
|
||||
|
@ -21,6 +21,8 @@
|
||||
#include "visorbus.h"
|
||||
#include "visorbus_private.h"
|
||||
|
||||
static const guid_t visor_vbus_channel_guid = VISOR_VBUS_CHANNEL_GUID;
|
||||
|
||||
/* Display string that is guaranteed to be no longer the 99 characters */
|
||||
#define LINESIZE 99
|
||||
#define POLLJIFFIES_NORMALCHANNEL 10
|
||||
@ -38,11 +40,11 @@ static ssize_t modalias_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct visor_device *vdev;
|
||||
uuid_le guid;
|
||||
const guid_t *guid;
|
||||
|
||||
vdev = to_visor_device(dev);
|
||||
guid = visorchannel_get_uuid(vdev->visorchannel);
|
||||
return sprintf(buf, "visorbus:%pUl\n", &guid);
|
||||
guid = visorchannel_get_guid(vdev->visorchannel);
|
||||
return sprintf(buf, "visorbus:%pUl\n", guid);
|
||||
}
|
||||
static DEVICE_ATTR_RO(modalias);
|
||||
|
||||
@ -78,18 +80,18 @@ static LIST_HEAD(list_all_device_instances);
|
||||
* is used to pass the EFI_DIAG_CAPTURE_PROTOCOL needed to log messages.
|
||||
*/
|
||||
int visor_check_channel(struct channel_header *ch,
|
||||
uuid_le expected_uuid,
|
||||
const guid_t *expected_guid,
|
||||
char *chname,
|
||||
u64 expected_min_bytes,
|
||||
u32 expected_version,
|
||||
u64 expected_signature)
|
||||
{
|
||||
if (uuid_le_cmp(expected_uuid, NULL_UUID_LE) != 0) {
|
||||
if (!guid_is_null(expected_guid)) {
|
||||
/* caller wants us to verify type GUID */
|
||||
if (uuid_le_cmp(ch->chtype, expected_uuid) != 0) {
|
||||
if (!guid_equal(&ch->chtype, expected_guid)) {
|
||||
pr_err("Channel mismatch on channel=%s(%pUL) field=type expected=%pUL actual=%pUL\n",
|
||||
chname, &expected_uuid,
|
||||
&expected_uuid, &ch->chtype);
|
||||
chname, expected_guid,
|
||||
expected_guid, &ch->chtype);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -97,7 +99,7 @@ int visor_check_channel(struct channel_header *ch,
|
||||
if (expected_min_bytes > 0) {
|
||||
if (ch->size < expected_min_bytes) {
|
||||
pr_err("Channel mismatch on channel=%s(%pUL) field=size expected=0x%-8.8Lx actual=0x%-8.8Lx\n",
|
||||
chname, &expected_uuid,
|
||||
chname, expected_guid,
|
||||
(unsigned long long)expected_min_bytes,
|
||||
ch->size);
|
||||
return 0;
|
||||
@ -107,7 +109,7 @@ int visor_check_channel(struct channel_header *ch,
|
||||
if (expected_version > 0) {
|
||||
if (ch->version_id != expected_version) {
|
||||
pr_err("Channel mismatch on channel=%s(%pUL) field=version expected=0x%-8.8lx actual=0x%-8.8x\n",
|
||||
chname, &expected_uuid,
|
||||
chname, expected_guid,
|
||||
(unsigned long)expected_version,
|
||||
ch->version_id);
|
||||
return 0;
|
||||
@ -117,7 +119,7 @@ int visor_check_channel(struct channel_header *ch,
|
||||
if (expected_signature > 0) {
|
||||
if (ch->signature != expected_signature) {
|
||||
pr_err("Channel mismatch on channel=%s(%pUL) field=signature expected=0x%-8.8Lx actual=0x%-8.8Lx\n",
|
||||
chname, &expected_uuid,
|
||||
chname, expected_guid,
|
||||
expected_signature, ch->signature);
|
||||
return 0;
|
||||
}
|
||||
@ -129,12 +131,12 @@ EXPORT_SYMBOL_GPL(visor_check_channel);
|
||||
static int visorbus_uevent(struct device *xdev, struct kobj_uevent_env *env)
|
||||
{
|
||||
struct visor_device *dev;
|
||||
uuid_le guid;
|
||||
const guid_t *guid;
|
||||
|
||||
dev = to_visor_device(xdev);
|
||||
guid = visorchannel_get_uuid(dev->visorchannel);
|
||||
guid = visorchannel_get_guid(dev->visorchannel);
|
||||
|
||||
return add_uevent_var(env, "MODALIAS=visorbus:%pUl", &guid);
|
||||
return add_uevent_var(env, "MODALIAS=visorbus:%pUl", guid);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -148,23 +150,21 @@ static int visorbus_uevent(struct device *xdev, struct kobj_uevent_env *env)
|
||||
*/
|
||||
static int visorbus_match(struct device *xdev, struct device_driver *xdrv)
|
||||
{
|
||||
uuid_le channel_type;
|
||||
const guid_t *channel_type;
|
||||
int i;
|
||||
struct visor_device *dev;
|
||||
struct visor_driver *drv;
|
||||
|
||||
dev = to_visor_device(xdev);
|
||||
channel_type = visorchannel_get_uuid(dev->visorchannel);
|
||||
channel_type = visorchannel_get_guid(dev->visorchannel);
|
||||
drv = to_visor_driver(xdrv);
|
||||
if (!drv->channel_types)
|
||||
return 0;
|
||||
|
||||
for (i = 0;
|
||||
(uuid_le_cmp(drv->channel_types[i].guid, NULL_UUID_LE) != 0) ||
|
||||
(drv->channel_types[i].name);
|
||||
!guid_is_null(&drv->channel_types[i].guid) || drv->channel_types[i].name;
|
||||
i++)
|
||||
if (uuid_le_cmp(drv->channel_types[i].guid,
|
||||
channel_type) == 0)
|
||||
if (guid_equal(&drv->channel_types[i].guid, channel_type))
|
||||
return i + 1;
|
||||
|
||||
return 0;
|
||||
@ -330,7 +330,7 @@ static ssize_t partition_guid_show(struct device *dev,
|
||||
{
|
||||
struct visor_device *vdev = to_visor_device(dev);
|
||||
|
||||
return sprintf(buf, "{%pUb}\n", &vdev->partition_uuid);
|
||||
return sprintf(buf, "{%pUb}\n", &vdev->partition_guid);
|
||||
}
|
||||
static DEVICE_ATTR_RO(partition_guid);
|
||||
|
||||
@ -729,7 +729,7 @@ static int get_vbus_header_info(struct visorchannel *chan,
|
||||
int err;
|
||||
|
||||
if (!visor_check_channel(visorchannel_get_header(chan),
|
||||
visor_vbus_channel_uuid,
|
||||
&visor_vbus_channel_guid,
|
||||
"vbus",
|
||||
sizeof(struct visor_vbus_channel),
|
||||
VISOR_VBUS_CHANNEL_VERSIONID,
|
||||
|
@ -44,10 +44,10 @@ void visorbus_exit(void);
|
||||
|
||||
struct visorchannel *visorchannel_create(u64 physaddr,
|
||||
unsigned long channel_bytes,
|
||||
gfp_t gfp, uuid_le guid);
|
||||
gfp_t gfp, const guid_t *guid);
|
||||
struct visorchannel *visorchannel_create_with_lock(u64 physaddr,
|
||||
unsigned long channel_bytes,
|
||||
gfp_t gfp, uuid_le guid);
|
||||
gfp_t gfp, const guid_t *guid);
|
||||
void visorchannel_destroy(struct visorchannel *channel);
|
||||
int visorchannel_read(struct visorchannel *channel, ulong offset,
|
||||
void *dest, ulong nbytes);
|
||||
@ -60,6 +60,6 @@ char *visorchannel_zoneid(struct visorchannel *channel, char *s);
|
||||
u64 visorchannel_get_clientpartition(struct visorchannel *channel);
|
||||
int visorchannel_set_clientpartition(struct visorchannel *channel,
|
||||
u64 partition_handle);
|
||||
char *visorchannel_uuid_id(uuid_le *guid, char *s);
|
||||
char *visorchannel_guid_id(const guid_t *guid, char *s);
|
||||
void *visorchannel_get_header(struct visorchannel *channel);
|
||||
#endif
|
||||
|
@ -29,10 +29,10 @@
|
||||
#define VISOR_DRV_NAME "visorchannel"
|
||||
|
||||
#define VISOR_CONSOLEVIDEO_CHANNEL_GUID \
|
||||
UUID_LE(0x3cd6e705, 0xd6a2, 0x4aa5, \
|
||||
0xad, 0x5c, 0x7b, 0x8, 0x88, 0x9d, 0xff, 0xe2)
|
||||
GUID_INIT(0x3cd6e705, 0xd6a2, 0x4aa5, \
|
||||
0xad, 0x5c, 0x7b, 0x8, 0x88, 0x9d, 0xff, 0xe2)
|
||||
|
||||
static const uuid_le visor_video_guid = VISOR_CONSOLEVIDEO_CHANNEL_GUID;
|
||||
static const guid_t visor_video_guid = VISOR_CONSOLEVIDEO_CHANNEL_GUID;
|
||||
|
||||
struct visorchannel {
|
||||
u64 physaddr;
|
||||
@ -40,7 +40,7 @@ struct visorchannel {
|
||||
void *mapped;
|
||||
bool requested;
|
||||
struct channel_header chan_hdr;
|
||||
uuid_le guid;
|
||||
guid_t guid;
|
||||
/*
|
||||
* channel creator knows if more than one
|
||||
* thread will be inserting or removing
|
||||
@ -50,8 +50,8 @@ struct visorchannel {
|
||||
spinlock_t insert_lock;
|
||||
/* protect tail writes in chan_hdr */
|
||||
spinlock_t remove_lock;
|
||||
uuid_le type;
|
||||
uuid_le inst;
|
||||
guid_t type;
|
||||
guid_t inst;
|
||||
};
|
||||
|
||||
void visorchannel_destroy(struct visorchannel *channel)
|
||||
@ -76,7 +76,7 @@ ulong visorchannel_get_nbytes(struct visorchannel *channel)
|
||||
return channel->nbytes;
|
||||
}
|
||||
|
||||
char *visorchannel_uuid_id(uuid_le *guid, char *s)
|
||||
char *visorchannel_guid_id(const guid_t *guid, char *s)
|
||||
{
|
||||
sprintf(s, "%pUL", guid);
|
||||
return s;
|
||||
@ -84,12 +84,12 @@ char *visorchannel_uuid_id(uuid_le *guid, char *s)
|
||||
|
||||
char *visorchannel_id(struct visorchannel *channel, char *s)
|
||||
{
|
||||
return visorchannel_uuid_id(&channel->guid, s);
|
||||
return visorchannel_guid_id(&channel->guid, s);
|
||||
}
|
||||
|
||||
char *visorchannel_zoneid(struct visorchannel *channel, char *s)
|
||||
{
|
||||
return visorchannel_uuid_id(&channel->chan_hdr.zone_uuid, s);
|
||||
return visorchannel_guid_id(&channel->chan_hdr.zone_guid, s);
|
||||
}
|
||||
|
||||
u64 visorchannel_get_clientpartition(struct visorchannel *channel)
|
||||
@ -105,16 +105,16 @@ int visorchannel_set_clientpartition(struct visorchannel *channel,
|
||||
}
|
||||
|
||||
/**
|
||||
* visorchannel_get_uuid() - queries the UUID of the designated channel
|
||||
* visorchannel_get_guid() - queries the GUID of the designated channel
|
||||
* @channel: the channel to query
|
||||
*
|
||||
* Return: the UUID of the provided channel
|
||||
* Return: the GUID of the provided channel
|
||||
*/
|
||||
uuid_le visorchannel_get_uuid(struct visorchannel *channel)
|
||||
const guid_t *visorchannel_get_guid(struct visorchannel *channel)
|
||||
{
|
||||
return channel->guid;
|
||||
return &channel->guid;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(visorchannel_get_uuid);
|
||||
EXPORT_SYMBOL_GPL(visorchannel_get_guid);
|
||||
|
||||
int visorchannel_read(struct visorchannel *channel, ulong offset, void *dest,
|
||||
ulong nbytes)
|
||||
@ -365,7 +365,7 @@ static int signalinsert_inner(struct visorchannel *channel, u32 queue,
|
||||
* back-end), in which case the actual channel size will be
|
||||
* read from the channel header in memory
|
||||
* @gfp: gfp_t to use when allocating memory for the data struct
|
||||
* @guid: uuid that identifies channel type; this may 0 if the channel
|
||||
* @guid: GUID that identifies channel type; this may 0 if the channel
|
||||
* has already been initialized in memory (which is true for all
|
||||
* channels provided to guest environments by the s-Par
|
||||
* back-end), in which case the actual channel guid will be
|
||||
@ -380,7 +380,7 @@ static int signalinsert_inner(struct visorchannel *channel, u32 queue,
|
||||
static struct visorchannel *visorchannel_create_guts(
|
||||
u64 physaddr,
|
||||
unsigned long channel_bytes,
|
||||
gfp_t gfp, uuid_le guid,
|
||||
gfp_t gfp, const guid_t *guid,
|
||||
bool needs_lock)
|
||||
{
|
||||
struct visorchannel *channel;
|
||||
@ -406,7 +406,7 @@ static struct visorchannel *visorchannel_create_guts(
|
||||
* release later on.
|
||||
*/
|
||||
channel->requested = request_mem_region(physaddr, size, VISOR_DRV_NAME);
|
||||
if (!channel->requested && uuid_le_cmp(guid, visor_video_guid))
|
||||
if (!channel->requested && !guid_equal(guid, &visor_video_guid))
|
||||
/* we only care about errors if this is not the video channel */
|
||||
goto err_destroy_channel;
|
||||
|
||||
@ -427,8 +427,8 @@ static struct visorchannel *visorchannel_create_guts(
|
||||
/* we had better be a CLIENT of this channel */
|
||||
if (channel_bytes == 0)
|
||||
channel_bytes = (ulong)channel->chan_hdr.size;
|
||||
if (uuid_le_cmp(guid, NULL_UUID_LE) == 0)
|
||||
guid = channel->chan_hdr.chtype;
|
||||
if (guid_is_null(guid))
|
||||
guid = &channel->chan_hdr.chtype;
|
||||
|
||||
memunmap(channel->mapped);
|
||||
if (channel->requested)
|
||||
@ -436,7 +436,7 @@ static struct visorchannel *visorchannel_create_guts(
|
||||
channel->mapped = NULL;
|
||||
channel->requested = request_mem_region(channel->physaddr,
|
||||
channel_bytes, VISOR_DRV_NAME);
|
||||
if (!channel->requested && uuid_le_cmp(guid, visor_video_guid))
|
||||
if (!channel->requested && !guid_equal(guid, &visor_video_guid))
|
||||
/* we only care about errors if this is not the video channel */
|
||||
goto err_destroy_channel;
|
||||
|
||||
@ -448,7 +448,7 @@ static struct visorchannel *visorchannel_create_guts(
|
||||
}
|
||||
|
||||
channel->nbytes = channel_bytes;
|
||||
channel->guid = guid;
|
||||
guid_copy(&channel->guid, guid);
|
||||
return channel;
|
||||
|
||||
err_destroy_channel:
|
||||
@ -458,7 +458,7 @@ err_destroy_channel:
|
||||
|
||||
struct visorchannel *visorchannel_create(u64 physaddr,
|
||||
unsigned long channel_bytes,
|
||||
gfp_t gfp, uuid_le guid)
|
||||
gfp_t gfp, const guid_t *guid)
|
||||
{
|
||||
return visorchannel_create_guts(physaddr, channel_bytes, gfp, guid,
|
||||
false);
|
||||
@ -466,7 +466,7 @@ struct visorchannel *visorchannel_create(u64 physaddr,
|
||||
|
||||
struct visorchannel *visorchannel_create_with_lock(u64 physaddr,
|
||||
unsigned long channel_bytes,
|
||||
gfp_t gfp, uuid_le guid)
|
||||
gfp_t gfp, const guid_t *guid)
|
||||
{
|
||||
return visorchannel_create_guts(physaddr, channel_bytes, gfp, guid,
|
||||
true);
|
||||
|
@ -22,6 +22,10 @@
|
||||
#include "visorbus_private.h"
|
||||
#include "vmcallinterface.h"
|
||||
|
||||
static const guid_t visor_vhba_channel_guid = VISOR_VHBA_CHANNEL_GUID;
|
||||
static const guid_t visor_siovm_guid = VISOR_SIOVM_GUID;
|
||||
static const guid_t visor_controlvm_channel_guid = VISOR_CONTROLVM_CHANNEL_GUID;
|
||||
|
||||
#define POLLJIFFIES_CONTROLVMCHANNEL_FAST 1
|
||||
#define POLLJIFFIES_CONTROLVMCHANNEL_SLOW 100
|
||||
|
||||
@ -267,13 +271,12 @@ static ssize_t remaining_steps_store(struct device *dev,
|
||||
}
|
||||
static DEVICE_ATTR_RW(remaining_steps);
|
||||
|
||||
static uuid_le
|
||||
parser_id_get(struct parser_context *ctx)
|
||||
static const guid_t *parser_id_get(struct parser_context *ctx)
|
||||
{
|
||||
struct visor_controlvm_parameters_header *phdr = NULL;
|
||||
|
||||
phdr = (struct visor_controlvm_parameters_header *)(ctx->data);
|
||||
return phdr->id;
|
||||
return &phdr->id;
|
||||
}
|
||||
|
||||
static void parser_done(struct parser_context *ctx)
|
||||
@ -588,7 +591,7 @@ visorbus_create(struct controlvm_message *inmsg)
|
||||
bus_info->chipset_bus_no = bus_no;
|
||||
bus_info->chipset_dev_no = BUS_ROOT_DEVICE;
|
||||
|
||||
if (uuid_le_cmp(cmd->create_bus.bus_inst_uuid, visor_siovm_uuid) == 0) {
|
||||
if (guid_equal(&cmd->create_bus.bus_inst_guid, &visor_siovm_guid)) {
|
||||
err = save_crash_message(inmsg, CRASH_BUS);
|
||||
if (err)
|
||||
goto err_free_bus_info;
|
||||
@ -610,7 +613,7 @@ visorbus_create(struct controlvm_message *inmsg)
|
||||
visorchannel = visorchannel_create(cmd->create_bus.channel_addr,
|
||||
cmd->create_bus.channel_bytes,
|
||||
GFP_KERNEL,
|
||||
cmd->create_bus.bus_data_type_uuid);
|
||||
&cmd->create_bus.bus_data_type_guid);
|
||||
if (!visorchannel) {
|
||||
err = -ENOMEM;
|
||||
goto err_free_pending_msg;
|
||||
@ -715,7 +718,9 @@ visorbus_configure(struct controlvm_message *inmsg,
|
||||
goto err_respond;
|
||||
|
||||
if (parser_ctx) {
|
||||
bus_info->partition_uuid = parser_id_get(parser_ctx);
|
||||
const guid_t *partition_guid = parser_id_get(parser_ctx);
|
||||
|
||||
guid_copy(&bus_info->partition_guid, partition_guid);
|
||||
bus_info->name = parser_name_get(parser_ctx);
|
||||
}
|
||||
|
||||
@ -773,7 +778,7 @@ visorbus_device_create(struct controlvm_message *inmsg)
|
||||
|
||||
dev_info->chipset_bus_no = bus_no;
|
||||
dev_info->chipset_dev_no = dev_no;
|
||||
dev_info->inst = cmd->create_device.dev_inst_uuid;
|
||||
guid_copy(&dev_info->inst, &cmd->create_device.dev_inst_guid);
|
||||
|
||||
/* not sure where the best place to set the 'parent' */
|
||||
dev_info->device.parent = &bus_info->device;
|
||||
@ -782,7 +787,7 @@ visorbus_device_create(struct controlvm_message *inmsg)
|
||||
visorchannel_create_with_lock(cmd->create_device.channel_addr,
|
||||
cmd->create_device.channel_bytes,
|
||||
GFP_KERNEL,
|
||||
cmd->create_device.data_type_uuid);
|
||||
&cmd->create_device.data_type_guid);
|
||||
if (!visorchannel) {
|
||||
dev_err(&chipset_dev->acpi_device->dev,
|
||||
"failed to create visorchannel: %d/%d\n",
|
||||
@ -791,9 +796,8 @@ visorbus_device_create(struct controlvm_message *inmsg)
|
||||
goto err_free_dev_info;
|
||||
}
|
||||
dev_info->visorchannel = visorchannel;
|
||||
dev_info->channel_type_guid = cmd->create_device.data_type_uuid;
|
||||
if (uuid_le_cmp(cmd->create_device.data_type_uuid,
|
||||
visor_vhba_channel_uuid) == 0) {
|
||||
guid_copy(&dev_info->channel_type_guid, &cmd->create_device.data_type_guid);
|
||||
if (guid_equal(&cmd->create_device.data_type_guid, &visor_vhba_channel_guid)) {
|
||||
err = save_crash_message(inmsg, CRASH_DEV);
|
||||
if (err)
|
||||
goto err_destroy_visorchannel;
|
||||
@ -1787,7 +1791,6 @@ visorchipset_init(struct acpi_device *acpi_device)
|
||||
{
|
||||
int err = -ENODEV;
|
||||
u64 addr;
|
||||
uuid_le uuid = VISOR_CONTROLVM_CHANNEL_UUID;
|
||||
struct visorchannel *controlvm_channel;
|
||||
|
||||
chipset_dev = kzalloc(sizeof(*chipset_dev), GFP_KERNEL);
|
||||
@ -1801,8 +1804,8 @@ visorchipset_init(struct acpi_device *acpi_device)
|
||||
acpi_device->driver_data = chipset_dev;
|
||||
chipset_dev->acpi_device = acpi_device;
|
||||
chipset_dev->poll_jiffies = POLLJIFFIES_CONTROLVMCHANNEL_FAST;
|
||||
controlvm_channel = visorchannel_create_with_lock(addr,
|
||||
0, GFP_KERNEL, uuid);
|
||||
controlvm_channel = visorchannel_create_with_lock(addr, 0, GFP_KERNEL,
|
||||
&visor_controlvm_channel_guid);
|
||||
if (!controlvm_channel)
|
||||
goto error_free_chipset_dev;
|
||||
|
||||
@ -1814,7 +1817,7 @@ visorchipset_init(struct acpi_device *acpi_device)
|
||||
goto error_destroy_channel;
|
||||
|
||||
if (!visor_check_channel(visorchannel_get_header(controlvm_channel),
|
||||
VISOR_CONTROLVM_CHANNEL_UUID,
|
||||
&visor_controlvm_channel_guid,
|
||||
"controlvm",
|
||||
sizeof(struct visor_controlvm_channel),
|
||||
VISOR_CONTROLVM_CHANNEL_VERSIONID,
|
||||
|
@ -39,12 +39,12 @@ static struct visor_channeltype_descriptor visorhba_channel_types[] = {
|
||||
/* Note that the only channel type we expect to be reported by the
|
||||
* bus driver is the VISOR_VHBA channel.
|
||||
*/
|
||||
{ VISOR_VHBA_CHANNEL_UUID, "sparvhba" },
|
||||
{ NULL_UUID_LE, NULL }
|
||||
{ VISOR_VHBA_CHANNEL_GUID, "sparvhba" },
|
||||
{}
|
||||
};
|
||||
|
||||
MODULE_DEVICE_TABLE(visorbus, visorhba_channel_types);
|
||||
MODULE_ALIAS("visorbus:" VISOR_VHBA_CHANNEL_UUID_STR);
|
||||
MODULE_ALIAS("visorbus:" VISOR_VHBA_CHANNEL_GUID_STR);
|
||||
|
||||
struct visordisk_info {
|
||||
u32 valid;
|
||||
|
@ -33,16 +33,16 @@
|
||||
#include "ultrainputreport.h"
|
||||
|
||||
/* Keyboard channel {c73416d0-b0b8-44af-b304-9d2ae99f1b3d} */
|
||||
#define VISOR_KEYBOARD_CHANNEL_UUID \
|
||||
UUID_LE(0xc73416d0, 0xb0b8, 0x44af, \
|
||||
0xb3, 0x4, 0x9d, 0x2a, 0xe9, 0x9f, 0x1b, 0x3d)
|
||||
#define VISOR_KEYBOARD_CHANNEL_UUID_STR "c73416d0-b0b8-44af-b304-9d2ae99f1b3d"
|
||||
#define VISOR_KEYBOARD_CHANNEL_GUID \
|
||||
GUID_INIT(0xc73416d0, 0xb0b8, 0x44af, \
|
||||
0xb3, 0x4, 0x9d, 0x2a, 0xe9, 0x9f, 0x1b, 0x3d)
|
||||
#define VISOR_KEYBOARD_CHANNEL_GUID_STR "c73416d0-b0b8-44af-b304-9d2ae99f1b3d"
|
||||
|
||||
/* Mouse channel {addf07d4-94a9-46e2-81c3-61abcdbdbd87} */
|
||||
#define VISOR_MOUSE_CHANNEL_UUID \
|
||||
UUID_LE(0xaddf07d4, 0x94a9, 0x46e2, \
|
||||
0x81, 0xc3, 0x61, 0xab, 0xcd, 0xbd, 0xbd, 0x87)
|
||||
#define VISOR_MOUSE_CHANNEL_UUID_STR "addf07d4-94a9-46e2-81c3-61abcdbdbd87"
|
||||
#define VISOR_MOUSE_CHANNEL_GUID \
|
||||
GUID_INIT(0xaddf07d4, 0x94a9, 0x46e2, \
|
||||
0x81, 0xc3, 0x61, 0xab, 0xcd, 0xbd, 0xbd, 0x87)
|
||||
#define VISOR_MOUSE_CHANNEL_GUID_STR "addf07d4-94a9-46e2-81c3-61abcdbdbd87"
|
||||
|
||||
#define PIXELS_ACROSS_DEFAULT 800
|
||||
#define PIXELS_DOWN_DEFAULT 600
|
||||
@ -71,8 +71,8 @@ struct visorinput_devdata {
|
||||
unsigned char keycode_table[0];
|
||||
};
|
||||
|
||||
static const uuid_le visor_keyboard_channel_uuid = VISOR_KEYBOARD_CHANNEL_UUID;
|
||||
static const uuid_le visor_mouse_channel_uuid = VISOR_MOUSE_CHANNEL_UUID;
|
||||
static const guid_t visor_keyboard_channel_guid = VISOR_KEYBOARD_CHANNEL_GUID;
|
||||
static const guid_t visor_mouse_channel_guid = VISOR_MOUSE_CHANNEL_GUID;
|
||||
|
||||
/*
|
||||
* Borrowed from drivers/input/keyboard/atakbd.c
|
||||
@ -448,13 +448,13 @@ err_kfree_devdata:
|
||||
|
||||
static int visorinput_probe(struct visor_device *dev)
|
||||
{
|
||||
uuid_le guid;
|
||||
const guid_t *guid;
|
||||
enum visorinput_device_type devtype;
|
||||
|
||||
guid = visorchannel_get_uuid(dev->visorchannel);
|
||||
if (uuid_le_cmp(guid, visor_mouse_channel_uuid) == 0)
|
||||
guid = visorchannel_get_guid(dev->visorchannel);
|
||||
if (guid_equal(guid, &visor_mouse_channel_guid))
|
||||
devtype = visorinput_mouse;
|
||||
else if (uuid_le_cmp(guid, visor_keyboard_channel_uuid) == 0)
|
||||
else if (guid_equal(guid, &visor_keyboard_channel_guid))
|
||||
devtype = visorinput_keyboard;
|
||||
else
|
||||
return -ENODEV;
|
||||
@ -715,9 +715,9 @@ out:
|
||||
|
||||
/* GUIDS for all channel types supported by this driver. */
|
||||
static struct visor_channeltype_descriptor visorinput_channel_types[] = {
|
||||
{ VISOR_KEYBOARD_CHANNEL_UUID, "keyboard"},
|
||||
{ VISOR_MOUSE_CHANNEL_UUID, "mouse"},
|
||||
{ NULL_UUID_LE, NULL }
|
||||
{ VISOR_KEYBOARD_CHANNEL_GUID, "keyboard"},
|
||||
{ VISOR_MOUSE_CHANNEL_GUID, "mouse"},
|
||||
{}
|
||||
};
|
||||
|
||||
static struct visor_driver visorinput_driver = {
|
||||
@ -750,5 +750,5 @@ MODULE_AUTHOR("Unisys");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("s-Par human input driver for virtual keyboard/mouse");
|
||||
|
||||
MODULE_ALIAS("visorbus:" VISOR_MOUSE_CHANNEL_UUID_STR);
|
||||
MODULE_ALIAS("visorbus:" VISOR_KEYBOARD_CHANNEL_UUID_STR);
|
||||
MODULE_ALIAS("visorbus:" VISOR_MOUSE_CHANNEL_GUID_STR);
|
||||
MODULE_ALIAS("visorbus:" VISOR_KEYBOARD_CHANNEL_GUID_STR);
|
||||
|
@ -41,8 +41,8 @@ static struct visor_channeltype_descriptor visornic_channel_types[] = {
|
||||
/* Note that the only channel type we expect to be reported by the
|
||||
* bus driver is the VISOR_VNIC channel.
|
||||
*/
|
||||
{ VISOR_VNIC_CHANNEL_UUID, "ultravnic" },
|
||||
{ NULL_UUID_LE, NULL }
|
||||
{ VISOR_VNIC_CHANNEL_GUID, "ultravnic" },
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(visorbus, visornic_channel_types);
|
||||
/*
|
||||
@ -52,7 +52,7 @@ MODULE_DEVICE_TABLE(visorbus, visornic_channel_types);
|
||||
* must be added to scripts/mode/file2alias.c, etc., to get this working
|
||||
* properly.
|
||||
*/
|
||||
MODULE_ALIAS("visorbus:" VISOR_VNIC_CHANNEL_UUID_STR);
|
||||
MODULE_ALIAS("visorbus:" VISOR_VNIC_CHANNEL_GUID_STR);
|
||||
|
||||
struct chanstat {
|
||||
unsigned long got_rcv;
|
||||
|
Loading…
Reference in New Issue
Block a user