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,
|
||||
};
|
||||
|
||||
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)
|
||||
{
|
||||
VIOsPAPRVLANDevice *dev = (VIOsPAPRVLANDevice *)sdev;
|
||||
@ -335,9 +344,7 @@ static target_ulong h_free_logical_lan(CPUPPCState *env, sPAPREnvironment *spapr
|
||||
return H_RESOURCE;
|
||||
}
|
||||
|
||||
dev->buf_list = 0;
|
||||
dev->rx_bufs = 0;
|
||||
dev->isopen = 0;
|
||||
spapr_vlan_reset(sdev);
|
||||
return H_SUCCESS;
|
||||
}
|
||||
|
||||
@ -484,6 +491,7 @@ static void spapr_vlan_class_init(ObjectClass *klass, void *data)
|
||||
VIOsPAPRDeviceClass *k = VIO_SPAPR_DEVICE_CLASS(klass);
|
||||
|
||||
k->init = spapr_vlan_init;
|
||||
k->reset = spapr_vlan_reset;
|
||||
k->devnode = spapr_vlan_devnode;
|
||||
k->dt_name = "l-lan";
|
||||
k->dt_type = "network";
|
||||
|
Loading…
Reference in New Issue
Block a user