[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH] e1000: Fix hotplug
From: |
Alex Williamson |
Subject: |
[Qemu-devel] Re: [PATCH] e1000: Fix hotplug |
Date: |
Mon, 02 Aug 2010 15:29:49 -0600 |
rtl8139 has the same problem, except there's a much bigger pile of code
in rtl8139_reset()? I think maybe we need to revisit this wholesale
remove of reset calls from init functions, unless I'm missing how
hotplug is supposed to work. Thanks,
Alex
On Mon, 2010-08-02 at 15:15 -0600, Alex Williamson wrote:
> When we removed the call to e1000_reset() back in cset c1699988, we
> left some register state uninitialized. When we hotplug the device,
> we don't go through a reset cycle, which means a hot added e1000 is
> useless until the VM reboots. Duplicate the bits we need from
> e1000_reset().
>
> Signed-off-by: Alex Williamson <address@hidden>
> ---
>
> 0.13 candidate?
>
> hw/e1000.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/hw/e1000.c b/hw/e1000.c
> index 80b78bc..eb323d2 100644
> --- a/hw/e1000.c
> +++ b/hw/e1000.c
> @@ -1129,6 +1129,10 @@ static int pci_e1000_init(PCIDevice *pci_dev)
> checksum = (uint16_t) EEPROM_SUM - checksum;
> d->eeprom_data[EEPROM_CHECKSUM_REG] = checksum;
>
> + memmove(d->phy_reg, phy_reg_init, sizeof phy_reg_init);
> + memmove(d->mac_reg, mac_reg_init, sizeof mac_reg_init);
> + d->rxbuf_min_shift = 1;
> +
> d->nic = qemu_new_nic(&net_e1000_info, &d->conf,
> d->dev.qdev.info->name, d->dev.qdev.id, d);
>
>