From: Michael S. Tsirkin Date: Wed, 9 Dec 2009 20:35:37 +0000 (+0200) Subject: e1000: fix init values for command register X-Git-Tag: v0.12.2~24^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c56651312b98a6bb9b87659ebeac810a48d159ab;p=thirdparty%2Fqemu.git e1000: fix init values for command register Command register for e1000 was initialized to values out of spec: all of bus master, io, memory and interrupt disable bits were set. This breaks the device now that we actually respect the interrupt disable bit, unless the guest happens to clear it. Fix, and make the device more spec compliant, by not touching the default. There are implications for migration from old qemu as well, will be addressed separately. Reported-by: Luiz Capitulino Tested-by: Luiz Capitulino Signed-off-by: Michael S. Tsirkin --- diff --git a/hw/e1000.c b/hw/e1000.c index 8566fe32769..ad7a2679621 100644 --- a/hw/e1000.c +++ b/hw/e1000.c @@ -1089,7 +1089,6 @@ static int pci_e1000_init(PCIDevice *pci_dev) pci_config_set_vendor_id(pci_conf, PCI_VENDOR_ID_INTEL); pci_config_set_device_id(pci_conf, E1000_DEVID); - *(uint16_t *)(pci_conf+0x04) = cpu_to_le16(0x0407); *(uint16_t *)(pci_conf+0x06) = cpu_to_le16(0x0010); pci_conf[0x08] = 0x03; pci_config_set_class(pci_conf, PCI_CLASS_NETWORK_ETHERNET);