mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 02:24:58 -06:00
Miscellaenous bugfixes, including crash fixes from Alexey, Peter M. and
Thomas. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQEcBAABAgAGBQJauOmSAAoJEL/70l94x66DwA4IAIfXUyWSDzAMTc19N/gY4eKB cptfJas1CmfrMU+EBIVZoiVdYF1H5qvctxVSaCXL3y7XNfwrjfDoiplfbi9rTSKb pW59bqIf7Y+ViOYDYHdbxKMcvWxIaiWKfpzWkncy+aeqObs620VSCbVmqVsQsKQu 1OHWrTlgNAP4aqPy9gZ6O1YXBDxTCIKW9N+QIdho5RqB1uPFkjBJcxlF04ydF9S7 kIgblBsosljTOk03I2hf6KKtfXfRXctgE/RYyE8SW3dy+CQWfiGjkE/z17ABBjK2 g7Rex6S9NA/+fDXO+2MAYnx6iBA9Dkxt2CcWWDjGwg+nXS4+B/OoF4MhRwV6N2g= =5hGp -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging Miscellaenous bugfixes, including crash fixes from Alexey, Peter M. and Thomas. # gpg: Signature made Mon 26 Mar 2018 13:37:38 BST # gpg: using RSA key BFFBD25F78C7AE83 # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * remotes/bonzini/tags/for-upstream: qemu-pr-helper: Actually allow users to specify pidfile chardev/char-fe: Allow NULL chardev in qemu_chr_fe_init() iothread: fix breakage on windows scsi: turn "is this a SCSI device?" into a conditional hint chardev-socket: remove useless if tcg: Really fix cpu_io_recompile vhost-user-test: add back memfd check vhost-user-test: do not hang if chardev creation failed scripts/device-crash-test: Remove fixed isapc-with-iommu entry hw/audio: Fix crashes when devices are used on ISA bus without DMA fdc: Exit if ISA controller does not support DMA hw/net/can: Fix segfaults when using the devices without bus WHPX improve vcpu_post_run perf WHPX fix WHvSetPartitionProperty in PropertyCode WHPX fix WHvGetCapability out WrittenSizeInBytes scripts/get_maintainer.pl: Print proper error message for missing $file Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
7b93d78a04
18 changed files with 159 additions and 124 deletions
|
@ -28,6 +28,7 @@
|
|||
#include "hw/isa/isa.h"
|
||||
#include "hw/qdev.h"
|
||||
#include "qemu/timer.h"
|
||||
#include "qapi/error.h"
|
||||
|
||||
/*
|
||||
Missing features:
|
||||
|
@ -663,8 +664,13 @@ static void cs4231a_realizefn (DeviceState *dev, Error **errp)
|
|||
CSState *s = CS4231A (dev);
|
||||
IsaDmaClass *k;
|
||||
|
||||
isa_init_irq (d, &s->pic, s->irq);
|
||||
s->isa_dma = isa_get_dma(isa_bus_from_device(d), s->dma);
|
||||
if (!s->isa_dma) {
|
||||
error_setg(errp, "ISA controller does not support DMA");
|
||||
return;
|
||||
}
|
||||
|
||||
isa_init_irq(d, &s->pic, s->irq);
|
||||
k = ISADMA_GET_CLASS(s->isa_dma);
|
||||
k->register_channel(s->isa_dma, s->dma, cs_dma_read, s);
|
||||
|
||||
|
|
|
@ -241,6 +241,12 @@ static void gus_realizefn (DeviceState *dev, Error **errp)
|
|||
IsaDmaClass *k;
|
||||
struct audsettings as;
|
||||
|
||||
s->isa_dma = isa_get_dma(isa_bus_from_device(d), s->emu.gusdma);
|
||||
if (!s->isa_dma) {
|
||||
error_setg(errp, "ISA controller does not support DMA");
|
||||
return;
|
||||
}
|
||||
|
||||
AUD_register_card ("gus", &s->card);
|
||||
|
||||
as.freq = s->freq;
|
||||
|
@ -272,7 +278,6 @@ static void gus_realizefn (DeviceState *dev, Error **errp)
|
|||
isa_register_portio_list(d, &s->portio_list2, (s->port + 0x100) & 0xf00,
|
||||
gus_portio_list2, s, "gus");
|
||||
|
||||
s->isa_dma = isa_get_dma(isa_bus_from_device(d), s->emu.gusdma);
|
||||
k = ISADMA_GET_CLASS(s->isa_dma);
|
||||
k->register_channel(s->isa_dma, s->emu.gusdma, GUS_read_DMA, s);
|
||||
s->emu.himemaddr = s->himem;
|
||||
|
|
|
@ -1371,6 +1371,13 @@ static void sb16_realizefn (DeviceState *dev, Error **errp)
|
|||
SB16State *s = SB16 (dev);
|
||||
IsaDmaClass *k;
|
||||
|
||||
s->isa_hdma = isa_get_dma(isa_bus_from_device(isadev), s->hdma);
|
||||
s->isa_dma = isa_get_dma(isa_bus_from_device(isadev), s->dma);
|
||||
if (!s->isa_dma || !s->isa_hdma) {
|
||||
error_setg(errp, "ISA controller does not support DMA");
|
||||
return;
|
||||
}
|
||||
|
||||
isa_init_irq (isadev, &s->pic, s->irq);
|
||||
|
||||
s->mixer_regs[0x80] = magic_of_irq (s->irq);
|
||||
|
@ -1389,11 +1396,9 @@ static void sb16_realizefn (DeviceState *dev, Error **errp)
|
|||
isa_register_portio_list(isadev, &s->portio_list, s->port,
|
||||
sb16_ioport_list, s, "sb16");
|
||||
|
||||
s->isa_hdma = isa_get_dma(isa_bus_from_device(isadev), s->hdma);
|
||||
k = ISADMA_GET_CLASS(s->isa_hdma);
|
||||
k->register_channel(s->isa_hdma, s->hdma, SB_read_DMA, s);
|
||||
|
||||
s->isa_dma = isa_get_dma(isa_bus_from_device(isadev), s->dma);
|
||||
k = ISADMA_GET_CLASS(s->isa_dma);
|
||||
k->register_channel(s->isa_dma, s->dma, SB_read_DMA, s);
|
||||
|
||||
|
|
|
@ -2695,7 +2695,10 @@ static void isabus_fdc_realize(DeviceState *dev, Error **errp)
|
|||
fdctrl->dma_chann = isa->dma;
|
||||
if (fdctrl->dma_chann != -1) {
|
||||
fdctrl->dma = isa_get_dma(isa_bus_from_device(isadev), isa->dma);
|
||||
assert(fdctrl->dma);
|
||||
if (!fdctrl->dma) {
|
||||
error_setg(errp, "ISA controller does not support DMA");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
qdev_set_legacy_instance_id(dev, isa->iobase, 2);
|
||||
|
|
|
@ -866,6 +866,10 @@ int can_sja_connect_to_bus(CanSJA1000State *s, CanBusState *bus)
|
|||
{
|
||||
s->bus_client.info = &can_sja_bus_client_info;
|
||||
|
||||
if (!bus) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (can_bus_insert_client(bus, &s->bus_client) < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -2607,9 +2607,10 @@ static void scsi_block_realize(SCSIDevice *dev, Error **errp)
|
|||
/* check we are using a driver managing SG_IO (version 3 and after) */
|
||||
rc = blk_ioctl(s->qdev.conf.blk, SG_GET_VERSION_NUM, &sg_version);
|
||||
if (rc < 0) {
|
||||
error_setg(errp, "cannot get SG_IO version number: %s. "
|
||||
"Is this a SCSI device?",
|
||||
strerror(-rc));
|
||||
error_setg_errno(errp, -rc, "cannot get SG_IO version number");
|
||||
if (rc != -EPERM) {
|
||||
error_append_hint(errp, "Is this a SCSI device?\n");
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (sg_version < 30000) {
|
||||
|
|
|
@ -500,9 +500,10 @@ static void scsi_generic_realize(SCSIDevice *s, Error **errp)
|
|||
/* check we are using a driver managing SG_IO (version 3 and after */
|
||||
rc = blk_ioctl(s->conf.blk, SG_GET_VERSION_NUM, &sg_version);
|
||||
if (rc < 0) {
|
||||
error_setg(errp, "cannot get SG_IO version number: %s. "
|
||||
"Is this a SCSI device?",
|
||||
strerror(-rc));
|
||||
error_setg_errno(errp, -rc, "cannot get SG_IO version number");
|
||||
if (rc != -EPERM) {
|
||||
error_append_hint(errp, "Is this a SCSI device?\n");
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (sg_version < 30000) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue