mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
nodedev: refactor CCW device address
Replace cssid, ssid and devno elements with virCCWDeviceAddress. Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
04de9ad285
commit
7ad25b4665
@ -640,12 +640,7 @@ static void
|
|||||||
virNodeDeviceCapCCWDefFormat(virBuffer *buf,
|
virNodeDeviceCapCCWDefFormat(virBuffer *buf,
|
||||||
const virNodeDevCapData *data)
|
const virNodeDevCapData *data)
|
||||||
{
|
{
|
||||||
virBufferAsprintf(buf, "<cssid>0x%x</cssid>\n",
|
virCCWDeviceAddressFormat(buf, data->ccw_dev.dev_addr);
|
||||||
data->ccw_dev.cssid);
|
|
||||||
virBufferAsprintf(buf, "<ssid>0x%x</ssid>\n",
|
|
||||||
data->ccw_dev.ssid);
|
|
||||||
virBufferAsprintf(buf, "<devno>0x%04x</devno>\n",
|
|
||||||
data->ccw_dev.devno);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1231,9 +1226,7 @@ virNodeDevCapCCWParseXML(xmlXPathContextPtr ctxt,
|
|||||||
if (virNodeDevCCWDeviceAddressParseXML(ctxt, node, def->name, ccw_addr) < 0)
|
if (virNodeDevCCWDeviceAddressParseXML(ctxt, node, def->name, ccw_addr) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
ccw_dev->cssid = ccw_addr->cssid;
|
ccw_dev->dev_addr = g_steal_pointer(&ccw_addr);
|
||||||
ccw_dev->ssid = ccw_addr->ssid;
|
|
||||||
ccw_dev->devno = ccw_addr->devno;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2621,6 +2614,7 @@ virNodeDevCapsDefFree(virNodeDevCapsDef *caps)
|
|||||||
g_free(data->mdev.parent_addr);
|
g_free(data->mdev.parent_addr);
|
||||||
break;
|
break;
|
||||||
case VIR_NODE_DEV_CAP_CSS_DEV:
|
case VIR_NODE_DEV_CAP_CSS_DEV:
|
||||||
|
g_free(data->ccw_dev.dev_addr);
|
||||||
for (i = 0; i < data->ccw_dev.nmdev_types; i++)
|
for (i = 0; i < data->ccw_dev.nmdev_types; i++)
|
||||||
virMediatedDeviceTypeFree(data->ccw_dev.mdev_types[i]);
|
virMediatedDeviceTypeFree(data->ccw_dev.mdev_types[i]);
|
||||||
g_free(data->ccw_dev.mdev_types);
|
g_free(data->ccw_dev.mdev_types);
|
||||||
@ -2638,10 +2632,12 @@ virNodeDevCapsDefFree(virNodeDevCapsDef *caps)
|
|||||||
g_free(data->mdev_parent.mdev_types);
|
g_free(data->mdev_parent.mdev_types);
|
||||||
g_free(data->mdev_parent.address);
|
g_free(data->mdev_parent.address);
|
||||||
break;
|
break;
|
||||||
|
case VIR_NODE_DEV_CAP_CCW_DEV:
|
||||||
|
g_free(data->ccw_dev.dev_addr);
|
||||||
|
break;
|
||||||
case VIR_NODE_DEV_CAP_DRM:
|
case VIR_NODE_DEV_CAP_DRM:
|
||||||
case VIR_NODE_DEV_CAP_FC_HOST:
|
case VIR_NODE_DEV_CAP_FC_HOST:
|
||||||
case VIR_NODE_DEV_CAP_VPORTS:
|
case VIR_NODE_DEV_CAP_VPORTS:
|
||||||
case VIR_NODE_DEV_CAP_CCW_DEV:
|
|
||||||
case VIR_NODE_DEV_CAP_VDPA:
|
case VIR_NODE_DEV_CAP_VDPA:
|
||||||
case VIR_NODE_DEV_CAP_AP_CARD:
|
case VIR_NODE_DEV_CAP_AP_CARD:
|
||||||
case VIR_NODE_DEV_CAP_AP_QUEUE:
|
case VIR_NODE_DEV_CAP_AP_QUEUE:
|
||||||
|
@ -281,9 +281,7 @@ struct _virNodeDevCapDRM {
|
|||||||
|
|
||||||
typedef struct _virNodeDevCapCCW virNodeDevCapCCW;
|
typedef struct _virNodeDevCapCCW virNodeDevCapCCW;
|
||||||
struct _virNodeDevCapCCW {
|
struct _virNodeDevCapCCW {
|
||||||
unsigned int cssid;
|
virCCWDeviceAddress *dev_addr;
|
||||||
unsigned int ssid;
|
|
||||||
unsigned int devno;
|
|
||||||
unsigned int flags; /* enum virNodeDevCCWCapFlags */
|
unsigned int flags; /* enum virNodeDevCCWCapFlags */
|
||||||
virMediatedDeviceType **mdev_types;
|
virMediatedDeviceType **mdev_types;
|
||||||
size_t nmdev_types;
|
size_t nmdev_types;
|
||||||
|
@ -683,16 +683,9 @@ nodeDeviceObjFormatAddress(virNodeDeviceObj *obj)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case VIR_NODE_DEV_CAP_CSS_DEV: {
|
case VIR_NODE_DEV_CAP_CSS_DEV:
|
||||||
virCCWDeviceAddress ccw_addr = {
|
addr = virCCWDeviceAddressAsString(caps->data.ccw_dev.dev_addr);
|
||||||
.cssid = caps->data.ccw_dev.cssid,
|
|
||||||
.ssid = caps->data.ccw_dev.ssid,
|
|
||||||
.devno = caps->data.ccw_dev.devno
|
|
||||||
};
|
|
||||||
|
|
||||||
addr = virCCWDeviceAddressAsString(&ccw_addr);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
case VIR_NODE_DEV_CAP_AP_MATRIX:
|
case VIR_NODE_DEV_CAP_AP_MATRIX:
|
||||||
addr = g_strdup(caps->data.ap_matrix.addr);
|
addr = g_strdup(caps->data.ap_matrix.addr);
|
||||||
|
@ -1184,18 +1184,21 @@ udevGetCCWAddress(const char *sysfs_path,
|
|||||||
virNodeDevCapData *data)
|
virNodeDevCapData *data)
|
||||||
{
|
{
|
||||||
char *p;
|
char *p;
|
||||||
|
g_autofree virCCWDeviceAddress *ccw_addr = g_new0(virCCWDeviceAddress, 1);
|
||||||
|
|
||||||
if ((p = strrchr(sysfs_path, '/')) == NULL ||
|
if ((p = strrchr(sysfs_path, '/')) == NULL ||
|
||||||
virCCWDeviceAddressParseFromString(p + 1,
|
virCCWDeviceAddressParseFromString(p + 1,
|
||||||
&data->ccw_dev.cssid,
|
&ccw_addr->cssid,
|
||||||
&data->ccw_dev.ssid,
|
&ccw_addr->ssid,
|
||||||
&data->ccw_dev.devno) < 0) {
|
&ccw_addr->devno) < 0) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("failed to parse the CCW address from sysfs path: '%1$s'"),
|
_("failed to parse the CCW address from sysfs path: '%1$s'"),
|
||||||
sysfs_path);
|
sysfs_path);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data->ccw_dev.dev_addr = g_steal_pointer(&ccw_addr);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,9 +435,10 @@ fakeCSSDevice(void)
|
|||||||
|
|
||||||
def->caps->data.type = VIR_NODE_DEV_CAP_CSS_DEV;
|
def->caps->data.type = VIR_NODE_DEV_CAP_CSS_DEV;
|
||||||
css_dev = &def->caps->data.ccw_dev;
|
css_dev = &def->caps->data.ccw_dev;
|
||||||
css_dev->cssid = 0;
|
css_dev->dev_addr = g_new0(virCCWDeviceAddress, 1);
|
||||||
css_dev->ssid = 0;
|
css_dev->dev_addr->cssid = 0;
|
||||||
css_dev->devno = 82;
|
css_dev->dev_addr->ssid = 0;
|
||||||
|
css_dev->dev_addr->devno = 82;
|
||||||
|
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user