mirror of
https://git.proxmox.com/git/qemu
synced 2025-08-06 23:45:57 +00:00
pseries: Fix reset of VIO network device
Currently, the PAPR VIO network device does not have a reset handler. This means that after a hard reset, H_REGISTER_LOGICAL_LAN will return an error when the new guest boot attempts to initialize the device. This patch corrects this, adding a suitable reset hook. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
3cabba609d
commit
c17491b63e
@ -182,6 +182,15 @@ static NetClientInfo net_spapr_vlan_info = {
|
|||||||
.receive = spapr_vlan_receive,
|
.receive = spapr_vlan_receive,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void spapr_vlan_reset(VIOsPAPRDevice *sdev)
|
||||||
|
{
|
||||||
|
VIOsPAPRVLANDevice *dev = DO_UPCAST(VIOsPAPRVLANDevice, sdev, sdev);
|
||||||
|
|
||||||
|
dev->buf_list = 0;
|
||||||
|
dev->rx_bufs = 0;
|
||||||
|
dev->isopen = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int spapr_vlan_init(VIOsPAPRDevice *sdev)
|
static int spapr_vlan_init(VIOsPAPRDevice *sdev)
|
||||||
{
|
{
|
||||||
VIOsPAPRVLANDevice *dev = (VIOsPAPRVLANDevice *)sdev;
|
VIOsPAPRVLANDevice *dev = (VIOsPAPRVLANDevice *)sdev;
|
||||||
@ -335,9 +344,7 @@ static target_ulong h_free_logical_lan(CPUPPCState *env, sPAPREnvironment *spapr
|
|||||||
return H_RESOURCE;
|
return H_RESOURCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->buf_list = 0;
|
spapr_vlan_reset(sdev);
|
||||||
dev->rx_bufs = 0;
|
|
||||||
dev->isopen = 0;
|
|
||||||
return H_SUCCESS;
|
return H_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,6 +491,7 @@ static void spapr_vlan_class_init(ObjectClass *klass, void *data)
|
|||||||
VIOsPAPRDeviceClass *k = VIO_SPAPR_DEVICE_CLASS(klass);
|
VIOsPAPRDeviceClass *k = VIO_SPAPR_DEVICE_CLASS(klass);
|
||||||
|
|
||||||
k->init = spapr_vlan_init;
|
k->init = spapr_vlan_init;
|
||||||
|
k->reset = spapr_vlan_reset;
|
||||||
k->devnode = spapr_vlan_devnode;
|
k->devnode = spapr_vlan_devnode;
|
||||||
k->dt_name = "l-lan";
|
k->dt_name = "l-lan";
|
||||||
k->dt_type = "network";
|
k->dt_type = "network";
|
||||||
|
Loading…
Reference in New Issue
Block a user