* [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface @ 2019-06-17 15:09 Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 1/8] block: Refactor macros - fix tabbing Sam Eiderman ` (9 more replies) 0 siblings, 10 replies; 11+ messages in thread From: Sam Eiderman @ 2019-06-17 15:09 UTC (permalink / raw) To: kwolf, qemu-block, qemu-devel, mreitz, seabios, kraxel, kevin Cc: liran.alon, shmuel.eiderman, karl.heubaum, arbel.moshe v1: Non-standard logical geometries break under QEMU. A virtual disk which contains an operating system which depends on logical geometries (consistent values being reported from BIOS INT13 AH=08) will most likely break under QEMU/SeaBIOS if it has non-standard logical geometries - for example 56 SPT (sectors per track). No matter what QEMU will guess - SeaBIOS, for large enough disks - will use LBA translation, which will report 63 SPT instead. In addition we can not enforce SeaBIOS to rely on phyiscal geometries at all. A virtio-blk-pci virtual disk with 255 phyiscal heads can not report more than 16 physical heads when moved to an IDE controller, the ATA spec allows a maximum of 16 heads - this is an artifact of virtualization. By supplying the logical geometies directly we are able to support such "exotic" disks. We will use fw_cfg to do just that. v2: Fix missing parenthesis check in "hd-geo-test: Add tests for lchs override" v3: * Rename fw_cfg key to "bios-geometry". * Remove "extendible" interface. * Add cpu_to_le32 fix as Laszlo suggested or big endian hosts * Fix last qtest commit - automatic docker tester for some reason does not have qemu-img set Sam Eiderman (8): block: Refactor macros - fix tabbing block: Support providing LCHS from user bootdevice: Add interface to gather LCHS scsi: Propagate unrealize() callback to scsi-hd bootdevice: Gather LCHS from all relevant devices bootdevice: Refactor get_boot_devices_list bootdevice: FW_CFG interface for LCHS values hd-geo-test: Add tests for lchs override bootdevice.c | 154 ++++++++++--- hw/block/virtio-blk.c | 6 + hw/ide/qdev.c | 7 +- hw/nvram/fw_cfg.c | 14 +- hw/scsi/scsi-bus.c | 15 ++ hw/scsi/scsi-disk.c | 14 ++ include/hw/block/block.h | 22 +- include/hw/scsi/scsi.h | 1 + include/sysemu/sysemu.h | 4 + tests/Makefile.include | 2 +- tests/hd-geo-test.c | 566 +++++++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 764 insertions(+), 41 deletions(-) -- 2.13.3 ^ permalink raw reply [flat|nested] 11+ messages in thread
* [Qemu-devel] [QEMU] [PATCH v3 1/8] block: Refactor macros - fix tabbing 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman @ 2019-06-17 15:09 ` Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 2/8] block: Support providing LCHS from user Sam Eiderman ` (8 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: Sam Eiderman @ 2019-06-17 15:09 UTC (permalink / raw) To: kwolf, qemu-block, qemu-devel, mreitz, seabios, kraxel, kevin Cc: liran.alon, shmuel.eiderman, karl.heubaum, arbel.moshe Fixing tabbing in block related macros. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> --- hw/ide/qdev.c | 2 +- include/hw/block/block.h | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c index 360cd20bd8..9cae3205df 100644 --- a/hw/ide/qdev.c +++ b/hw/ide/qdev.c @@ -285,7 +285,7 @@ static void ide_drive_realize(IDEDevice *dev, Error **errp) DEFINE_BLOCK_PROPERTIES(IDEDrive, dev.conf), \ DEFINE_BLOCK_ERROR_PROPERTIES(IDEDrive, dev.conf), \ DEFINE_PROP_STRING("ver", IDEDrive, dev.version), \ - DEFINE_PROP_UINT64("wwn", IDEDrive, dev.wwn, 0), \ + DEFINE_PROP_UINT64("wwn", IDEDrive, dev.wwn, 0), \ DEFINE_PROP_STRING("serial", IDEDrive, dev.serial),\ DEFINE_PROP_STRING("model", IDEDrive, dev.model) diff --git a/include/hw/block/block.h b/include/hw/block/block.h index 607539057a..fd55a30bca 100644 --- a/include/hw/block/block.h +++ b/include/hw/block/block.h @@ -50,21 +50,21 @@ static inline unsigned int get_physical_block_exp(BlockConf *conf) _conf.logical_block_size), \ DEFINE_PROP_BLOCKSIZE("physical_block_size", _state, \ _conf.physical_block_size), \ - DEFINE_PROP_UINT16("min_io_size", _state, _conf.min_io_size, 0), \ + DEFINE_PROP_UINT16("min_io_size", _state, _conf.min_io_size, 0), \ DEFINE_PROP_UINT32("opt_io_size", _state, _conf.opt_io_size, 0), \ - DEFINE_PROP_UINT32("discard_granularity", _state, \ - _conf.discard_granularity, -1), \ - DEFINE_PROP_ON_OFF_AUTO("write-cache", _state, _conf.wce, \ - ON_OFF_AUTO_AUTO), \ + DEFINE_PROP_UINT32("discard_granularity", _state, \ + _conf.discard_granularity, -1), \ + DEFINE_PROP_ON_OFF_AUTO("write-cache", _state, _conf.wce, \ + ON_OFF_AUTO_AUTO), \ DEFINE_PROP_BOOL("share-rw", _state, _conf.share_rw, false) #define DEFINE_BLOCK_PROPERTIES(_state, _conf) \ DEFINE_PROP_DRIVE("drive", _state, _conf.blk), \ DEFINE_BLOCK_PROPERTIES_BASE(_state, _conf) -#define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf) \ - DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0), \ - DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0), \ +#define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf) \ + DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0), \ + DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0), \ DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0) #define DEFINE_BLOCK_ERROR_PROPERTIES(_state, _conf) \ -- 2.13.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [QEMU] [PATCH v3 2/8] block: Support providing LCHS from user 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 1/8] block: Refactor macros - fix tabbing Sam Eiderman @ 2019-06-17 15:09 ` Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 3/8] bootdevice: Add interface to gather LCHS Sam Eiderman ` (7 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: Sam Eiderman @ 2019-06-17 15:09 UTC (permalink / raw) To: kwolf, qemu-block, qemu-devel, mreitz, seabios, kraxel, kevin Cc: liran.alon, shmuel.eiderman, karl.heubaum, arbel.moshe Add logical geometry variables to BlockConf. A user can now supply "lcyls", "lheads" & "lsecs" for any HD device that supports CHS ("cyls", "heads", "secs"). These devices include: * ide-hd * scsi-hd * virtio-blk-pci In future commits we will use the provided LCHS and pass it to the BIOS through fw_cfg to be supplied using INT13 routines. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> --- include/hw/block/block.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/hw/block/block.h b/include/hw/block/block.h index fd55a30bca..d7246f3862 100644 --- a/include/hw/block/block.h +++ b/include/hw/block/block.h @@ -26,6 +26,7 @@ typedef struct BlockConf { uint32_t discard_granularity; /* geometry, not all devices use this */ uint32_t cyls, heads, secs; + uint32_t lcyls, lheads, lsecs; OnOffAuto wce; bool share_rw; BlockdevOnError rerror; @@ -65,7 +66,10 @@ static inline unsigned int get_physical_block_exp(BlockConf *conf) #define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf) \ DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0), \ DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0), \ - DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0) + DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0), \ + DEFINE_PROP_UINT32("lcyls", _state, _conf.lcyls, 0), \ + DEFINE_PROP_UINT32("lheads", _state, _conf.lheads, 0), \ + DEFINE_PROP_UINT32("lsecs", _state, _conf.lsecs, 0) #define DEFINE_BLOCK_ERROR_PROPERTIES(_state, _conf) \ DEFINE_PROP_BLOCKDEV_ON_ERROR("rerror", _state, _conf.rerror, \ -- 2.13.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [QEMU] [PATCH v3 3/8] bootdevice: Add interface to gather LCHS 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 1/8] block: Refactor macros - fix tabbing Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 2/8] block: Support providing LCHS from user Sam Eiderman @ 2019-06-17 15:09 ` Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 4/8] scsi: Propagate unrealize() callback to scsi-hd Sam Eiderman ` (6 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: Sam Eiderman @ 2019-06-17 15:09 UTC (permalink / raw) To: kwolf, qemu-block, qemu-devel, mreitz, seabios, kraxel, kevin Cc: liran.alon, shmuel.eiderman, karl.heubaum, arbel.moshe Add an interface to provide direct logical CHS values for boot devices. We will use this interface in the next commits. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> --- bootdevice.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ include/sysemu/sysemu.h | 3 +++ 2 files changed, 58 insertions(+) diff --git a/bootdevice.c b/bootdevice.c index 1d225202f9..bc5e1c2de4 100644 --- a/bootdevice.c +++ b/bootdevice.c @@ -343,3 +343,58 @@ void device_add_bootindex_property(Object *obj, int32_t *bootindex, /* initialize devices' bootindex property to -1 */ object_property_set_int(obj, -1, name, NULL); } + +typedef struct FWLCHSEntry FWLCHSEntry; + +struct FWLCHSEntry { + QTAILQ_ENTRY(FWLCHSEntry) link; + DeviceState *dev; + char *suffix; + uint32_t lcyls; + uint32_t lheads; + uint32_t lsecs; +}; + +static QTAILQ_HEAD(, FWLCHSEntry) fw_lchs = + QTAILQ_HEAD_INITIALIZER(fw_lchs); + +void add_boot_device_lchs(DeviceState *dev, const char *suffix, + uint32_t lcyls, uint32_t lheads, uint32_t lsecs) +{ + FWLCHSEntry *node; + + if (!lcyls && !lheads && !lsecs) { + return; + } + + assert(dev != NULL || suffix != NULL); + + node = g_malloc0(sizeof(FWLCHSEntry)); + node->suffix = g_strdup(suffix); + node->dev = dev; + node->lcyls = lcyls; + node->lheads = lheads; + node->lsecs = lsecs; + + QTAILQ_INSERT_TAIL(&fw_lchs, node, link); +} + +void del_boot_device_lchs(DeviceState *dev, const char *suffix) +{ + FWLCHSEntry *i; + + if (dev == NULL) { + return; + } + + QTAILQ_FOREACH(i, &fw_lchs, link) { + if ((!suffix || !g_strcmp0(i->suffix, suffix)) && + i->dev == dev) { + QTAILQ_REMOVE(&fw_lchs, i, link); + g_free(i->suffix); + g_free(i); + + break; + } + } +} diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 61579ae71e..173dfbb539 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -171,6 +171,9 @@ void device_add_bootindex_property(Object *obj, int32_t *bootindex, DeviceState *dev, Error **errp); void restore_boot_order(void *opaque); void validate_bootdevices(const char *devices, Error **errp); +void add_boot_device_lchs(DeviceState *dev, const char *suffix, + uint32_t lcyls, uint32_t lheads, uint32_t lsecs); +void del_boot_device_lchs(DeviceState *dev, const char *suffix); /* handler to set the boot_device order for a specific type of MachineClass */ typedef void QEMUBootSetHandler(void *opaque, const char *boot_order, -- 2.13.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [QEMU] [PATCH v3 4/8] scsi: Propagate unrealize() callback to scsi-hd 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman ` (2 preceding siblings ...) 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 3/8] bootdevice: Add interface to gather LCHS Sam Eiderman @ 2019-06-17 15:09 ` Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 5/8] bootdevice: Gather LCHS from all relevant devices Sam Eiderman ` (5 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: Sam Eiderman @ 2019-06-17 15:09 UTC (permalink / raw) To: kwolf, qemu-block, qemu-devel, mreitz, seabios, kraxel, kevin Cc: liran.alon, shmuel.eiderman, karl.heubaum, arbel.moshe We will need to add LCHS removal logic to scsi-hd's unrealize() in the next commit. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> --- hw/scsi/scsi-bus.c | 15 +++++++++++++++ include/hw/scsi/scsi.h | 1 + 2 files changed, 16 insertions(+) diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index c480553083..f6fe497a1a 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -55,6 +55,14 @@ static void scsi_device_realize(SCSIDevice *s, Error **errp) } } +static void scsi_device_unrealize(SCSIDevice *s, Error **errp) +{ + SCSIDeviceClass *sc = SCSI_DEVICE_GET_CLASS(s); + if (sc->unrealize) { + sc->unrealize(s, errp); + } +} + int scsi_bus_parse_cdb(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf, void *hba_private) { @@ -213,11 +221,18 @@ static void scsi_qdev_realize(DeviceState *qdev, Error **errp) static void scsi_qdev_unrealize(DeviceState *qdev, Error **errp) { SCSIDevice *dev = SCSI_DEVICE(qdev); + Error *local_err = NULL; if (dev->vmsentry) { qemu_del_vm_change_state_handler(dev->vmsentry); } + scsi_device_unrealize(dev, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } + scsi_device_purge_requests(dev, SENSE_CODE(NO_SENSE)); blockdev_mark_auto_del(dev->conf.blk); } diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h index 426566a5c6..8cf71f910d 100644 --- a/include/hw/scsi/scsi.h +++ b/include/hw/scsi/scsi.h @@ -59,6 +59,7 @@ struct SCSIRequest { typedef struct SCSIDeviceClass { DeviceClass parent_class; void (*realize)(SCSIDevice *dev, Error **errp); + void (*unrealize)(SCSIDevice *dev, Error **errp); int (*parse_cdb)(SCSIDevice *dev, SCSICommand *cmd, uint8_t *buf, void *hba_private); SCSIRequest *(*alloc_req)(SCSIDevice *s, uint32_t tag, uint32_t lun, -- 2.13.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [QEMU] [PATCH v3 5/8] bootdevice: Gather LCHS from all relevant devices 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman ` (3 preceding siblings ...) 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 4/8] scsi: Propagate unrealize() callback to scsi-hd Sam Eiderman @ 2019-06-17 15:09 ` Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 6/8] bootdevice: Refactor get_boot_devices_list Sam Eiderman ` (4 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: Sam Eiderman @ 2019-06-17 15:09 UTC (permalink / raw) To: kwolf, qemu-block, qemu-devel, mreitz, seabios, kraxel, kevin Cc: liran.alon, shmuel.eiderman, karl.heubaum, arbel.moshe Relevant devices are: * ide-hd (and ide-cd, ide-drive) * scsi-hd (and scsi-cd, scsi-disk, scsi-block) * virtio-blk-pci We do not call del_boot_device_lchs() for ide-* since we don't need to - IDE block devices do not support unplugging. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> --- hw/block/virtio-blk.c | 6 ++++++ hw/ide/qdev.c | 5 +++++ hw/scsi/scsi-disk.c | 14 ++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 06e57a4d39..787bbd768a 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -1182,6 +1182,11 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) blk_set_guest_block_size(s->blk, s->conf.conf.logical_block_size); blk_iostatus_enable(s->blk); + + add_boot_device_lchs(dev, "/disk@0,0", + (&conf->conf)->lcyls, + (&conf->conf)->lheads, + (&conf->conf)->lsecs); } static void virtio_blk_device_unrealize(DeviceState *dev, Error **errp) @@ -1189,6 +1194,7 @@ static void virtio_blk_device_unrealize(DeviceState *dev, Error **errp) VirtIODevice *vdev = VIRTIO_DEVICE(dev); VirtIOBlock *s = VIRTIO_BLK(dev); + del_boot_device_lchs(dev, "/disk@0,0"); virtio_blk_data_plane_destroy(s->dataplane); s->dataplane = NULL; qemu_del_vm_change_state_handler(s->change); diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c index 9cae3205df..07f429d5e3 100644 --- a/hw/ide/qdev.c +++ b/hw/ide/qdev.c @@ -215,6 +215,11 @@ static void ide_dev_initfn(IDEDevice *dev, IDEDriveKind kind, Error **errp) add_boot_device_path(dev->conf.bootindex, &dev->qdev, dev->unit ? "/disk@1" : "/disk@0"); + + add_boot_device_lchs(&dev->qdev, dev->unit ? "/disk@1" : "/disk@0", + (&dev->conf)->lcyls, + (&dev->conf)->lheads, + (&dev->conf)->lsecs); } static void ide_dev_get_bootindex(Object *obj, Visitor *v, const char *name, diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index 7b89ac798b..3451aefdea 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -2390,6 +2390,16 @@ static void scsi_realize(SCSIDevice *dev, Error **errp) blk_set_guest_block_size(s->qdev.conf.blk, s->qdev.blocksize); blk_iostatus_enable(s->qdev.conf.blk); + + add_boot_device_lchs(&dev->qdev, NULL, + (&dev->conf)->lcyls, + (&dev->conf)->lheads, + (&dev->conf)->lsecs); +} + +static void scsi_unrealize(SCSIDevice *dev, Error **errp) +{ + del_boot_device_lchs(&dev->qdev, NULL); } static void scsi_hd_realize(SCSIDevice *dev, Error **errp) @@ -2988,6 +2998,7 @@ static void scsi_hd_class_initfn(ObjectClass *klass, void *data) SCSIDeviceClass *sc = SCSI_DEVICE_CLASS(klass); sc->realize = scsi_hd_realize; + sc->unrealize = scsi_unrealize; sc->alloc_req = scsi_new_request; sc->unit_attention_reported = scsi_disk_unit_attention_reported; dc->desc = "virtual SCSI disk"; @@ -3019,6 +3030,7 @@ static void scsi_cd_class_initfn(ObjectClass *klass, void *data) SCSIDeviceClass *sc = SCSI_DEVICE_CLASS(klass); sc->realize = scsi_cd_realize; + sc->unrealize = scsi_unrealize; sc->alloc_req = scsi_new_request; sc->unit_attention_reported = scsi_disk_unit_attention_reported; dc->desc = "virtual SCSI CD-ROM"; @@ -3054,6 +3066,7 @@ static void scsi_block_class_initfn(ObjectClass *klass, void *data) SCSIDiskClass *sdc = SCSI_DISK_BASE_CLASS(klass); sc->realize = scsi_block_realize; + sc->unrealize = scsi_unrealize; sc->alloc_req = scsi_block_new_request; sc->parse_cdb = scsi_block_parse_cdb; sdc->dma_readv = scsi_block_dma_readv; @@ -3095,6 +3108,7 @@ static void scsi_disk_class_initfn(ObjectClass *klass, void *data) SCSIDeviceClass *sc = SCSI_DEVICE_CLASS(klass); sc->realize = scsi_disk_realize; + sc->unrealize = scsi_unrealize; sc->alloc_req = scsi_new_request; sc->unit_attention_reported = scsi_disk_unit_attention_reported; dc->fw_name = "disk"; -- 2.13.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [QEMU] [PATCH v3 6/8] bootdevice: Refactor get_boot_devices_list 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman ` (4 preceding siblings ...) 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 5/8] bootdevice: Gather LCHS from all relevant devices Sam Eiderman @ 2019-06-17 15:09 ` Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 7/8] bootdevice: FW_CFG interface for LCHS values Sam Eiderman ` (3 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: Sam Eiderman @ 2019-06-17 15:09 UTC (permalink / raw) To: kwolf, qemu-block, qemu-devel, mreitz, seabios, kraxel, kevin Cc: liran.alon, shmuel.eiderman, karl.heubaum, arbel.moshe Move device name construction to a separate function. We will reuse this function in the following commit to pass logical CHS parameters through fw_cfg much like we currently pass bootindex. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> --- bootdevice.c | 61 +++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/bootdevice.c b/bootdevice.c index bc5e1c2de4..2b12fb85a4 100644 --- a/bootdevice.c +++ b/bootdevice.c @@ -202,6 +202,39 @@ DeviceState *get_boot_device(uint32_t position) return res; } +static char *get_boot_device_path(DeviceState *dev, bool ignore_suffixes, + char *suffix) +{ + char *devpath = NULL, *s = NULL, *d, *bootpath; + + if (dev) { + devpath = qdev_get_fw_dev_path(dev); + assert(devpath); + } + + if (!ignore_suffixes) { + if (dev) { + d = qdev_get_own_fw_dev_path_from_handler(dev->parent_bus, dev); + if (d) { + assert(!suffix); + s = d; + } else { + s = g_strdup(suffix); + } + } else { + s = g_strdup(suffix); + } + } + + bootpath = g_strdup_printf("%s%s", + devpath ? devpath : "", + s ? s : ""); + g_free(devpath); + g_free(s); + + return bootpath; +} + /* * This function returns null terminated string that consist of new line * separated device paths. @@ -218,36 +251,10 @@ char *get_boot_devices_list(size_t *size) bool ignore_suffixes = mc->ignore_boot_device_suffixes; QTAILQ_FOREACH(i, &fw_boot_order, link) { - char *devpath = NULL, *suffix = NULL; char *bootpath; - char *d; size_t len; - if (i->dev) { - devpath = qdev_get_fw_dev_path(i->dev); - assert(devpath); - } - - if (!ignore_suffixes) { - if (i->dev) { - d = qdev_get_own_fw_dev_path_from_handler(i->dev->parent_bus, - i->dev); - if (d) { - assert(!i->suffix); - suffix = d; - } else { - suffix = g_strdup(i->suffix); - } - } else { - suffix = g_strdup(i->suffix); - } - } - - bootpath = g_strdup_printf("%s%s", - devpath ? devpath : "", - suffix ? suffix : ""); - g_free(devpath); - g_free(suffix); + bootpath = get_boot_device_path(i->dev, ignore_suffixes, i->suffix); if (total) { list[total-1] = '\n'; -- 2.13.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [QEMU] [PATCH v3 7/8] bootdevice: FW_CFG interface for LCHS values 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman ` (5 preceding siblings ...) 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 6/8] bootdevice: Refactor get_boot_devices_list Sam Eiderman @ 2019-06-17 15:09 ` Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 8/8] hd-geo-test: Add tests for lchs override Sam Eiderman ` (2 subsequent siblings) 9 siblings, 0 replies; 11+ messages in thread From: Sam Eiderman @ 2019-06-17 15:09 UTC (permalink / raw) To: kwolf, qemu-block, qemu-devel, mreitz, seabios, kraxel, kevin Cc: liran.alon, shmuel.eiderman, karl.heubaum, arbel.moshe Using fw_cfg, supply logical CHS values directly from QEMU to the BIOS. Non-standard logical geometries break under QEMU. A virtual disk which contains an operating system which depends on logical geometries (consistent values being reported from BIOS INT13 AH=08) will most likely break under QEMU/SeaBIOS if it has non-standard logical geometries - for example 56 SPT (sectors per track). No matter what QEMU will report - SeaBIOS, for large enough disks - will use LBA translation, which will report 63 SPT instead. In addition we cannot force SeaBIOS to rely on physical geometries at all. A virtio-blk-pci virtual disk with 255 phyiscal heads cannot report more than 16 physical heads when moved to an IDE controller, since the ATA spec allows a maximum of 16 heads - this is an artifact of virtualization. By supplying the logical geometries directly we are able to support such "exotic" disks. We serialize this information in a similar way to the "bootorder" interface. The new fw_cfg entry is "bios-geometry". Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> --- bootdevice.c | 38 ++++++++++++++++++++++++++++++++++++++ hw/nvram/fw_cfg.c | 14 +++++++++++--- include/sysemu/sysemu.h | 1 + 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/bootdevice.c b/bootdevice.c index 2b12fb85a4..5cd88f7fbf 100644 --- a/bootdevice.c +++ b/bootdevice.c @@ -405,3 +405,41 @@ void del_boot_device_lchs(DeviceState *dev, const char *suffix) } } } + +typedef struct QEMU_PACKED FWLCHSEntrySerialized { + /* Little-endian. */ + uint32_t lcyls; + uint32_t lheads; + uint32_t lsecs; +} FWLCHSEntrySerialized; + +/* Serialized as: (device name\0 + lchs struct) x devices */ +char *get_boot_devices_lchs_list(size_t *size) +{ + FWLCHSEntry *i; + FWLCHSEntrySerialized s; + size_t total = 0; + char *list = NULL; + + QTAILQ_FOREACH(i, &fw_lchs, link) { + char *bootpath; + size_t len; + + bootpath = get_boot_device_path(i->dev, false, i->suffix); + s.lcyls = cpu_to_le32(i->lcyls); + s.lheads = cpu_to_le32(i->lheads); + s.lsecs = cpu_to_le32(i->lsecs); + + len = strlen(bootpath) + 1; + list = g_realloc(list, total + len + sizeof(s)); + memcpy(&list[total], bootpath, len); + memcpy(&list[total + len], &s, sizeof(s)); + total += len + sizeof(s); + + g_free(bootpath); + } + + *size = total; + + return list; +} diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 9f7b7789bc..c1230fe11c 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -916,13 +916,21 @@ void *fw_cfg_modify_file(FWCfgState *s, const char *filename, static void fw_cfg_machine_reset(void *opaque) { + MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine()); + FWCfgState *s = opaque; void *ptr; size_t len; - FWCfgState *s = opaque; - char *bootindex = get_boot_devices_list(&len); + char *buf; - ptr = fw_cfg_modify_file(s, "bootorder", (uint8_t *)bootindex, len); + buf = get_boot_devices_list(&len); + ptr = fw_cfg_modify_file(s, "bootorder", (uint8_t *)buf, len); g_free(ptr); + + if (!mc->legacy_fw_cfg_order) { + buf = get_boot_devices_lchs_list(&len); + ptr = fw_cfg_modify_file(s, "bios-geometry", (uint8_t *)buf, len); + g_free(ptr); + } } static void fw_cfg_machine_ready(struct Notifier *n, void *data) diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index 173dfbb539..1ca8799588 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -174,6 +174,7 @@ void validate_bootdevices(const char *devices, Error **errp); void add_boot_device_lchs(DeviceState *dev, const char *suffix, uint32_t lcyls, uint32_t lheads, uint32_t lsecs); void del_boot_device_lchs(DeviceState *dev, const char *suffix); +char *get_boot_devices_lchs_list(size_t *size); /* handler to set the boot_device order for a specific type of MachineClass */ typedef void QEMUBootSetHandler(void *opaque, const char *boot_order, -- 2.13.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* [Qemu-devel] [QEMU] [PATCH v3 8/8] hd-geo-test: Add tests for lchs override 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman ` (6 preceding siblings ...) 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 7/8] bootdevice: FW_CFG interface for LCHS values Sam Eiderman @ 2019-06-17 15:09 ` Sam Eiderman 2019-06-17 16:31 ` [Qemu-devel] [SeaBIOS] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface no-reply 2019-06-17 16:45 ` no-reply 9 siblings, 0 replies; 11+ messages in thread From: Sam Eiderman @ 2019-06-17 15:09 UTC (permalink / raw) To: kwolf, qemu-block, qemu-devel, mreitz, seabios, kraxel, kevin Cc: liran.alon, shmuel.eiderman, karl.heubaum, arbel.moshe Add QTest tests to check the logical geometry override option. The tests in hd-geo-test are out of date - they only test IDE and do not test interesting MBRs. I added a few helper functions which will make adding more tests easier. QTest's fw_cfg helper functions support only legacy fw_cfg, so I had to read the new fw_cfg layout on my own. Creating qcow2 disks with specific size and MBR layout is currently unused - we only use a default empty MBR. Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Arbel Moshe <arbel.moshe@oracle.com> Signed-off-by: Sam Eiderman <shmuel.eiderman@oracle.com> --- tests/Makefile.include | 2 +- tests/hd-geo-test.c | 566 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 567 insertions(+), 1 deletion(-) diff --git a/tests/Makefile.include b/tests/Makefile.include index 46a36c2c95..55ea165ed4 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -765,7 +765,7 @@ tests/ide-test$(EXESUF): tests/ide-test.o $(libqos-pc-obj-y) tests/ahci-test$(EXESUF): tests/ahci-test.o $(libqos-pc-obj-y) qemu-img$(EXESUF) tests/ipmi-kcs-test$(EXESUF): tests/ipmi-kcs-test.o tests/ipmi-bt-test$(EXESUF): tests/ipmi-bt-test.o -tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o +tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o $(libqos-obj-y) tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y) tests/boot-serial-test$(EXESUF): tests/boot-serial-test.o $(libqos-obj-y) tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o \ diff --git a/tests/hd-geo-test.c b/tests/hd-geo-test.c index 62eb624726..8c523d51e6 100644 --- a/tests/hd-geo-test.c +++ b/tests/hd-geo-test.c @@ -17,7 +17,12 @@ #include "qemu/osdep.h" #include "qemu-common.h" +#include "qemu/bswap.h" +#include "qapi/qmp/qlist.h" #include "libqtest.h" +#include "libqos/fw_cfg.h" +#include "libqos/libqos.h" +#include "standard-headers/linux/qemu_fw_cfg.h" #define ARGV_SIZE 256 @@ -388,6 +393,552 @@ static void test_ide_drive_cd_0(void) qtest_quit(qts); } +typedef struct { + bool active; + uint32_t head; + uint32_t sector; + uint32_t cyl; + uint32_t end_head; + uint32_t end_sector; + uint32_t end_cyl; + uint32_t start_sect; + uint32_t nr_sects; +} MBRpartitions[4]; + +static MBRpartitions empty_mbr = { {false, 0, 0, 0, 0, 0, 0, 0, 0}, + {false, 0, 0, 0, 0, 0, 0, 0, 0}, + {false, 0, 0, 0, 0, 0, 0, 0, 0}, + {false, 0, 0, 0, 0, 0, 0, 0, 0} }; + +static char *create_qcow2_with_mbr(MBRpartitions mbr, uint64_t sectors) +{ + const char *template = "/tmp/qtest.XXXXXX"; + char *raw_path = strdup(template); + char *qcow2_path = strdup(template); + char cmd[100 + 2 * PATH_MAX]; + uint8_t buf[512]; + int i, ret, fd, offset; + uint64_t qcow2_size = sectors * 512; + uint8_t status, parttype, head, sector, cyl; + + offset = 0xbe; + + for (i = 0; i < 4; i++) { + status = mbr[i].active ? 0x80 : 0x00; + g_assert(mbr[i].head < 256); + g_assert(mbr[i].sector < 64); + g_assert(mbr[i].cyl < 1024); + head = mbr[i].head; + sector = mbr[i].sector + ((mbr[i].cyl & 0x300) >> 2); + cyl = mbr[i].cyl & 0xff; + + buf[offset + 0x0] = status; + buf[offset + 0x1] = head; + buf[offset + 0x2] = sector; + buf[offset + 0x3] = cyl; + + parttype = 0; + g_assert(mbr[i].end_head < 256); + g_assert(mbr[i].end_sector < 64); + g_assert(mbr[i].end_cyl < 1024); + head = mbr[i].end_head; + sector = mbr[i].end_sector + ((mbr[i].end_cyl & 0x300) >> 2); + cyl = mbr[i].end_cyl & 0xff; + + buf[offset + 0x4] = parttype; + buf[offset + 0x5] = head; + buf[offset + 0x6] = sector; + buf[offset + 0x7] = cyl; + + (*(uint32_t *)&buf[offset + 0x8]) = cpu_to_le32(mbr[i].start_sect); + (*(uint32_t *)&buf[offset + 0xc]) = cpu_to_le32(mbr[i].nr_sects); + + offset += 0x10; + } + + fd = mkstemp(raw_path); + g_assert(fd); + close(fd); + + fd = open(raw_path, O_WRONLY); + g_assert(fd >= 0); + ret = write(fd, buf, sizeof(buf)); + g_assert(ret == sizeof(buf)); + close(fd); + + fd = mkstemp(qcow2_path); + g_assert(fd); + close(fd); + + ret = snprintf(cmd, sizeof(cmd), + "$QTEST_QEMU_IMG convert -f raw -O qcow2 %s %s > /dev/null", + raw_path, qcow2_path); + g_assert((0 < ret) && (ret <= sizeof(cmd))); + ret = system(cmd); + g_assert(ret == 0); + + ret = snprintf(cmd, sizeof(cmd), + "$QTEST_QEMU_IMG resize %s %" PRIu64 " > /dev/null", + qcow2_path, qcow2_size); + g_assert((0 < ret) && (ret <= sizeof(cmd))); + ret = system(cmd); + g_assert(ret == 0); + + unlink(raw_path); + free(raw_path); + + return qcow2_path; +} + +struct QemuCfgFile { + uint32_t size; /* file size */ + uint16_t select; /* write this to 0x510 to read it */ + uint16_t reserved; + char name[56]; +}; + +static uint16_t find_fw_cfg_file(QFWCFG *fw_cfg, + const char *filename) +{ + struct QemuCfgFile qfile; + uint32_t count, e; + uint16_t select; + + count = qfw_cfg_get_u32(fw_cfg, FW_CFG_FILE_DIR); + count = be32_to_cpu(count); + for (select = 0, e = 0; e < count; e++) { + qfw_cfg_read_data(fw_cfg, &qfile, sizeof(qfile)); + if (!strcmp(filename, qfile.name)) { + select = be16_to_cpu(qfile.select); + } + } + + return select; +} + +static void read_fw_cfg_file(QFWCFG *fw_cfg, + const char *filename, + void *data, + size_t len) +{ + uint16_t select = find_fw_cfg_file(fw_cfg, filename); + + g_assert(select); + + qfw_cfg_get(fw_cfg, select, data, len); +} + +#define BIOS_GEOMETRY_MAX_SIZE 10000 + +typedef struct { + uint32_t c; + uint32_t h; + uint32_t s; +} CHS; + +typedef struct { + const char *dev_path; + CHS chs; +} CHSResult; + +static void read_bootdevices(QFWCFG *fw_cfg, CHSResult expected[]) +{ + char *buf = g_malloc0(BIOS_GEOMETRY_MAX_SIZE); + void *cur; + char *name; + CHS *chs; + GList *results = NULL, *cur_result; + CHSResult *r; + int i; + bool found; + + read_fw_cfg_file(fw_cfg, "bios-geometry", buf, BIOS_GEOMETRY_MAX_SIZE); + + cur = buf; + + while (strlen(cur)) { + name = cur; + chs = cur + strlen(cur) + 1; + + r = g_malloc0(sizeof(*r)); + r->dev_path = name; + r->chs.c = le32_to_cpu(chs->c); + r->chs.h = le32_to_cpu(chs->h); + r->chs.s = le32_to_cpu(chs->s); + + results = g_list_prepend(results, r); + + cur += strlen(cur) + 1 + sizeof(*chs); + } + + i = 0; + + while (expected[i].dev_path) { + found = false; + cur_result = results; + while (cur_result) { + r = cur_result->data; + if (!strcmp(r->dev_path, expected[i].dev_path) && + !memcmp(&(r->chs), &(expected[i].chs), sizeof(r->chs))) { + found = true; + break; + } + cur_result = g_list_next(cur_result); + } + g_assert(found); + g_free(cur_result->data); + results = g_list_delete_link(results, cur_result); + i++; + } + + g_assert(results == NULL); + + g_free(buf); +} + +#define MAX_DRIVES 30 + +typedef struct { + char **argv; + int argc; + char **drives; + int n_drives; + int n_scsi_disks; + int n_scsi_controllers; + int n_virtio_disks; +} TestArgs; + +static TestArgs *create_args(void) +{ + TestArgs *args = g_malloc0(sizeof(*args)); + args->argv = g_new0(char *, ARGV_SIZE); + args->argc = append_arg(args->argc, args->argv, + ARGV_SIZE, g_strdup("-nodefaults")); + args->drives = g_new0(char *, MAX_DRIVES); + return args; +} + +static void add_drive_with_mbr(TestArgs *args, + MBRpartitions mbr, uint64_t sectors) +{ + char *img_file_name; + char part[300]; + int ret; + + g_assert(args->n_drives < MAX_DRIVES); + + img_file_name = create_qcow2_with_mbr(mbr, sectors); + + args->drives[args->n_drives] = img_file_name; + ret = snprintf(part, sizeof(part), + "-drive file=%s,if=none,format=qcow2,id=disk%d", + img_file_name, args->n_drives); + g_assert((0 < ret) && (ret <= sizeof(part))); + args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part)); + args->n_drives++; +} + +static void add_ide_disk(TestArgs *args, + int drive_idx, int bus, int unit, int c, int h, int s) +{ + char part[300]; + int ret; + + ret = snprintf(part, sizeof(part), + "-device ide-hd,drive=disk%d,bus=ide.%d,unit=%d," + "lcyls=%d,lheads=%d,lsecs=%d", + drive_idx, bus, unit, c, h, s); + g_assert((0 < ret) && (ret <= sizeof(part))); + args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part)); +} + +static void add_scsi_controller(TestArgs *args, + const char *type, + const char *bus, + int addr) +{ + char part[300]; + int ret; + + ret = snprintf(part, sizeof(part), + "-device %s,id=scsi%d,bus=%s,addr=%d", + type, args->n_scsi_controllers, bus, addr); + g_assert((0 < ret) && (ret <= sizeof(part))); + args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part)); + args->n_scsi_controllers++; +} + +static void add_scsi_disk(TestArgs *args, + int drive_idx, int bus, + int channel, int scsi_id, int lun, + int c, int h, int s) +{ + char part[300]; + int ret; + + ret = snprintf(part, sizeof(part), + "-device scsi-hd,id=scsi-disk%d,drive=disk%d," + "bus=scsi%d.0," + "channel=%d,scsi-id=%d,lun=%d," + "lcyls=%d,lheads=%d,lsecs=%d", + args->n_scsi_disks, drive_idx, bus, channel, scsi_id, lun, + c, h, s); + g_assert((0 < ret) && (ret <= sizeof(part))); + args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part)); + args->n_scsi_disks++; +} + +static void add_virtio_disk(TestArgs *args, + int drive_idx, const char *bus, int addr, + int c, int h, int s) +{ + char part[300]; + int ret; + + ret = snprintf(part, sizeof(part), + "-device virtio-blk-pci,id=virtio-disk%d," + "drive=disk%d,bus=%s,addr=%d," + "lcyls=%d,lheads=%d,lsecs=%d", + args->n_virtio_disks, drive_idx, bus, addr, c, h, s); + g_assert((0 < ret) && (ret <= sizeof(part))); + args->argc = append_arg(args->argc, args->argv, ARGV_SIZE, g_strdup(part)); + args->n_virtio_disks++; +} + +static void test_override(TestArgs *args, CHSResult expected[]) +{ + char *joined_args; + QFWCFG *fw_cfg; + int i; + + joined_args = g_strjoinv(" ", args->argv); + + qtest_start(joined_args); + fw_cfg = pc_fw_cfg_init(global_qtest); + + read_bootdevices(fw_cfg, expected); + + g_free(joined_args); + qtest_end(); + + g_free(fw_cfg); + + for (i = 0; i < args->n_drives; i++) { + unlink(args->drives[i]); + free(args->drives[i]); + } + g_free(args->drives); + g_strfreev(args->argv); + g_free(args); +} + +static void test_override_ide(void) +{ + TestArgs *args = create_args(); + CHSResult expected[] = { + {"/pci@i0cf8/ide@1,1/drive@0/disk@0", {10000, 120, 30} }, + {"/pci@i0cf8/ide@1,1/drive@0/disk@1", {9000, 120, 30} }, + {"/pci@i0cf8/ide@1,1/drive@1/disk@0", {0, 1, 1} }, + {"/pci@i0cf8/ide@1,1/drive@1/disk@1", {1, 0, 0} }, + {NULL, {0, 0, 0} } + }; + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_ide_disk(args, 0, 0, 0, 10000, 120, 30); + add_ide_disk(args, 1, 0, 1, 9000, 120, 30); + add_ide_disk(args, 2, 1, 0, 0, 1, 1); + add_ide_disk(args, 3, 1, 1, 1, 0, 0); + test_override(args, expected); +} + +static void test_override_scsi(void) +{ + TestArgs *args = create_args(); + CHSResult expected[] = { + {"/pci@i0cf8/scsi@3/channel@0/disk@0,0", {10000, 120, 30} }, + {"/pci@i0cf8/scsi@3/channel@0/disk@1,0", {9000, 120, 30} }, + {"/pci@i0cf8/scsi@3/channel@0/disk@2,0", {1, 0, 0} }, + {"/pci@i0cf8/scsi@3/channel@0/disk@3,0", {0, 1, 0} }, + {NULL, {0, 0, 0} } + }; + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_scsi_controller(args, "lsi53c895a", "pci.0", 3); + add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30); + add_scsi_disk(args, 1, 0, 0, 1, 0, 9000, 120, 30); + add_scsi_disk(args, 2, 0, 0, 2, 0, 1, 0, 0); + add_scsi_disk(args, 3, 0, 0, 3, 0, 0, 1, 0); + test_override(args, expected); +} + +static void test_override_scsi_2_controllers(void) +{ + TestArgs *args = create_args(); + CHSResult expected[] = { + {"/pci@i0cf8/scsi@3/channel@0/disk@0,0", {10000, 120, 30} }, + {"/pci@i0cf8/scsi@3/channel@0/disk@1,0", {9000, 120, 30} }, + {"/pci@i0cf8/scsi@4/channel@0/disk@0,1", {1, 0, 0} }, + {"/pci@i0cf8/scsi@4/channel@0/disk@1,2", {0, 1, 0} }, + {NULL, {0, 0, 0} } + }; + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_scsi_controller(args, "lsi53c895a", "pci.0", 3); + add_scsi_controller(args, "virtio-scsi-pci", "pci.0", 4); + add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30); + add_scsi_disk(args, 1, 0, 0, 1, 0, 9000, 120, 30); + add_scsi_disk(args, 2, 1, 0, 0, 1, 1, 0, 0); + add_scsi_disk(args, 3, 1, 0, 1, 2, 0, 1, 0); + test_override(args, expected); +} + +static void test_override_virtio_blk(void) +{ + TestArgs *args = create_args(); + CHSResult expected[] = { + {"/pci@i0cf8/scsi@3/disk@0,0", {10000, 120, 30} }, + {"/pci@i0cf8/scsi@4/disk@0,0", {9000, 120, 30} }, + {NULL, {0, 0, 0} } + }; + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_virtio_disk(args, 0, "pci.0", 3, 10000, 120, 30); + add_virtio_disk(args, 1, "pci.0", 4, 9000, 120, 30); + test_override(args, expected); +} + +static void test_override_zero_chs(void) +{ + TestArgs *args = create_args(); + CHSResult expected[] = { + {NULL, {0, 0, 0} } + }; + add_drive_with_mbr(args, empty_mbr, 1); + add_ide_disk(args, 0, 1, 1, 0, 0, 0); + test_override(args, expected); +} + +static void test_override_scsi_hot_unplug(void) +{ + char *joined_args; + QFWCFG *fw_cfg; + QDict *response; + int i; + TestArgs *args = create_args(); + CHSResult expected[] = { + {"/pci@i0cf8/scsi@2/channel@0/disk@0,0", {10000, 120, 30} }, + {"/pci@i0cf8/scsi@2/channel@0/disk@1,0", {20, 20, 20} }, + {NULL, {0, 0, 0} } + }; + CHSResult expected2[] = { + {"/pci@i0cf8/scsi@2/channel@0/disk@1,0", {20, 20, 20} }, + {NULL, {0, 0, 0} } + }; + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_scsi_controller(args, "virtio-scsi-pci", "pci.0", 2); + add_scsi_disk(args, 0, 0, 0, 0, 0, 10000, 120, 30); + add_scsi_disk(args, 1, 0, 0, 1, 0, 20, 20, 20); + + joined_args = g_strjoinv(" ", args->argv); + + qtest_start(joined_args); + fw_cfg = pc_fw_cfg_init(global_qtest); + + read_bootdevices(fw_cfg, expected); + + /* unplug device an restart */ + response = qmp("{ 'execute': 'device_del'," + " 'arguments': {'id': 'scsi-disk0' }}"); + g_assert(response); + g_assert(!qdict_haskey(response, "error")); + qobject_unref(response); + response = qmp("{ 'execute': 'system_reset', 'arguments': { }}"); + g_assert(response); + g_assert(!qdict_haskey(response, "error")); + qobject_unref(response); + + qtest_qmp_eventwait(global_qtest, "RESET"); + + read_bootdevices(fw_cfg, expected2); + + g_free(joined_args); + qtest_end(); + + g_free(fw_cfg); + + for (i = 0; i < args->n_drives; i++) { + unlink(args->drives[i]); + free(args->drives[i]); + } + g_free(args->drives); + g_strfreev(args->argv); + g_free(args); +} + +static void test_override_virtio_hot_unplug(void) +{ + char *joined_args; + QFWCFG *fw_cfg; + QDict *response; + int i; + TestArgs *args = create_args(); + CHSResult expected[] = { + {"/pci@i0cf8/scsi@2/disk@0,0", {10000, 120, 30} }, + {"/pci@i0cf8/scsi@3/disk@0,0", {20, 20, 20} }, + {NULL, {0, 0, 0} } + }; + CHSResult expected2[] = { + {"/pci@i0cf8/scsi@3/disk@0,0", {20, 20, 20} }, + {NULL, {0, 0, 0} } + }; + add_drive_with_mbr(args, empty_mbr, 1); + add_drive_with_mbr(args, empty_mbr, 1); + add_virtio_disk(args, 0, "pci.0", 2, 10000, 120, 30); + add_virtio_disk(args, 1, "pci.0", 3, 20, 20, 20); + + joined_args = g_strjoinv(" ", args->argv); + + qtest_start(joined_args); + fw_cfg = pc_fw_cfg_init(global_qtest); + + read_bootdevices(fw_cfg, expected); + + /* unplug device an restart */ + response = qmp("{ 'execute': 'device_del'," + " 'arguments': {'id': 'virtio-disk0' }}"); + g_assert(response); + g_assert(!qdict_haskey(response, "error")); + qobject_unref(response); + response = qmp("{ 'execute': 'system_reset', 'arguments': { }}"); + g_assert(response); + g_assert(!qdict_haskey(response, "error")); + qobject_unref(response); + + qtest_qmp_eventwait(global_qtest, "RESET"); + + read_bootdevices(fw_cfg, expected2); + + g_free(joined_args); + qtest_end(); + + g_free(fw_cfg); + + for (i = 0; i < args->n_drives; i++) { + unlink(args->drives[i]); + free(args->drives[i]); + } + g_free(args->drives); + g_strfreev(args->argv); + g_free(args); +} + int main(int argc, char **argv) { Backend i; @@ -413,6 +964,21 @@ int main(int argc, char **argv) qtest_add_func("hd-geo/ide/device/mbr/chs", test_ide_device_mbr_chs); qtest_add_func("hd-geo/ide/device/user/chs", test_ide_device_user_chs); qtest_add_func("hd-geo/ide/device/user/chst", test_ide_device_user_chst); + if (have_qemu_img()) { + qtest_add_func("hd-geo/override/ide", test_override_ide); + qtest_add_func("hd-geo/override/scsi", test_override_scsi); + qtest_add_func("hd-geo/override/scsi_2_controllers", + test_override_scsi_2_controllers); + qtest_add_func("hd-geo/override/virtio_blk", test_override_virtio_blk); + qtest_add_func("hd-geo/override/zero_chs", test_override_zero_chs); + qtest_add_func("hd-geo/override/scsi_hot_unplug", + test_override_scsi_hot_unplug); + qtest_add_func("hd-geo/override/virtio_hot_unplug", + test_override_virtio_hot_unplug); + } else { + g_test_message("QTEST_QEMU_IMG not set or qemu-img missing; " + "skipping hd-geo/override/* tests"); + } ret = g_test_run(); -- 2.13.3 ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [SeaBIOS] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman ` (7 preceding siblings ...) 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 8/8] hd-geo-test: Add tests for lchs override Sam Eiderman @ 2019-06-17 16:31 ` no-reply 2019-06-17 16:45 ` no-reply 9 siblings, 0 replies; 11+ messages in thread From: no-reply @ 2019-06-17 16:31 UTC (permalink / raw) To: shmuel.eiderman Cc: kwolf, qemu-block, arbel.moshe, seabios, qemu-devel, mreitz, kevin, kraxel, karl.heubaum Patchew URL: https://patchew.org/QEMU/20190617150950.5264-1-shmuel.eiderman@oracle.com/ Hi, This series failed the asan build test. Please find the testing commands and their output below. If you have Docker installed, you can probably reproduce it locally. === TEST SCRIPT BEGIN === #!/bin/bash make docker-image-fedora V=1 NETWORK=1 time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1 === TEST SCRIPT END === PASS 1 fdc-test /x86_64/fdc/cmos PASS 2 fdc-test /x86_64/fdc/no_media_on_start PASS 3 fdc-test /x86_64/fdc/read_without_media ==9151==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 fdc-test /x86_64/fdc/media_change PASS 5 fdc-test /x86_64/fdc/sense_interrupt PASS 6 fdc-test /x86_64/fdc/relative_seek --- PASS 32 test-opts-visitor /visitor/opts/range/beyond PASS 33 test-opts-visitor /visitor/opts/dict/unvisited MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-coroutine -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-coroutine" ==9204==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9204==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd217df000; bottom 0x7f9ec58f8000; size: 0x005e5bee7000 (405269278720) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 test-coroutine /basic/no-dangling-access --- PASS 11 test-aio /aio/event/wait PASS 12 test-aio /aio/event/flush PASS 13 test-aio /aio/event/wait/no-flush-cb ==9221==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 14 test-aio /aio/timer/schedule PASS 15 test-aio /aio/coroutine/queue-chaining PASS 16 test-aio /aio-gsource/flush --- PASS 28 test-aio /aio-gsource/timer/schedule PASS 13 fdc-test /x86_64/fdc/fuzz-registers MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-aio-multithread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-aio-multithread" ==9228==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-aio-multithread /aio/multi/lifecycle MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/ide-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ide-test" PASS 2 test-aio-multithread /aio/multi/schedule ==9245==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 ide-test /x86_64/ide/identify PASS 3 test-aio-multithread /aio/multi/mutex/contended ==9256==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 ide-test /x86_64/ide/flush ==9267==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 ide-test /x86_64/ide/bmdma/simple_rw ==9273==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 test-aio-multithread /aio/multi/mutex/handoff PASS 4 ide-test /x86_64/ide/bmdma/trim ==9284==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 test-aio-multithread /aio/multi/mutex/mcs PASS 5 ide-test /x86_64/ide/bmdma/short_prdt ==9295==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 test-aio-multithread /aio/multi/mutex/pthread MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-throttle -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-throttle" PASS 6 ide-test /x86_64/ide/bmdma/one_sector_short_prdt --- PASS 6 test-throttle /throttle/detach_attach PASS 7 test-throttle /throttle/config_functions PASS 8 test-throttle /throttle/accounting ==9303==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 test-throttle /throttle/groups PASS 10 test-throttle /throttle/config/enabled PASS 11 test-throttle /throttle/config/conflicting --- PASS 14 test-throttle /throttle/config/max PASS 15 test-throttle /throttle/config/iops_size MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-thread-pool -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-thread-pool" ==9309==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-thread-pool /thread-pool/submit PASS 2 test-thread-pool /thread-pool/submit-aio PASS 3 test-thread-pool /thread-pool/submit-co PASS 4 test-thread-pool /thread-pool/submit-many ==9305==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 ide-test /x86_64/ide/bmdma/long_prdt ==9366==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9366==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdf0dff000; bottom 0x7ff6c41fe000; size: 0x00072cc01000 (30815555584) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 8 ide-test /x86_64/ide/bmdma/no_busmaster PASS 5 test-thread-pool /thread-pool/cancel PASS 9 ide-test /x86_64/ide/flush/nodev ==9392==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 test-thread-pool /thread-pool/cancel-async PASS 10 ide-test /x86_64/ide/flush/empty_drive MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-hbitmap -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-hbitmap" --- PASS 2 test-hbitmap /hbitmap/size/0 PASS 3 test-hbitmap /hbitmap/size/unaligned PASS 4 test-hbitmap /hbitmap/iter/empty ==9398==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 test-hbitmap /hbitmap/iter/partial PASS 6 test-hbitmap /hbitmap/iter/granularity PASS 7 test-hbitmap /hbitmap/iter/iter_and_reset --- PASS 11 ide-test /x86_64/ide/flush/retry_pci PASS 15 test-hbitmap /hbitmap/set/overlap PASS 16 test-hbitmap /hbitmap/reset/empty ==9408==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 17 test-hbitmap /hbitmap/reset/general PASS 18 test-hbitmap /hbitmap/reset/all PASS 19 test-hbitmap /hbitmap/truncate/nop --- PASS 29 test-hbitmap /hbitmap/truncate/shrink/large PASS 30 test-hbitmap /hbitmap/meta/zero PASS 12 ide-test /x86_64/ide/flush/retry_isa ==9415==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 13 ide-test /x86_64/ide/cdrom/pio ==9421==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 14 ide-test /x86_64/ide/cdrom/pio_large ==9427==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 15 ide-test /x86_64/ide/cdrom/dma MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/ahci-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="ahci-test" PASS 31 test-hbitmap /hbitmap/meta/one PASS 32 test-hbitmap /hbitmap/meta/byte PASS 33 test-hbitmap /hbitmap/meta/word ==9441==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 34 test-hbitmap /hbitmap/meta/sector PASS 35 test-hbitmap /hbitmap/serialize/align PASS 1 ahci-test /x86_64/ahci/sanity ==9447==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 ahci-test /x86_64/ahci/pci_spec PASS 36 test-hbitmap /hbitmap/serialize/basic PASS 37 test-hbitmap /hbitmap/serialize/part --- PASS 40 test-hbitmap /hbitmap/next_zero/next_zero_4 PASS 41 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_0 PASS 42 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_1 ==9453==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 43 test-hbitmap /hbitmap/next_dirty_area/next_dirty_area_4 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-bdrv-drain -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-drain" ==9460==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-bdrv-drain /bdrv-drain/nested PASS 2 test-bdrv-drain /bdrv-drain/multiparent PASS 3 test-bdrv-drain /bdrv-drain/set_aio_context --- PASS 37 test-bdrv-drain /bdrv-drain/detach/parent_cb PASS 38 test-bdrv-drain /bdrv-drain/detach/driver_cb PASS 39 test-bdrv-drain /bdrv-drain/attach/drain ==9481==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-bdrv-graph-mod -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bdrv-graph-mod" ==9506==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-bdrv-graph-mod /bdrv-graph-mod/update-perm-tree PASS 2 test-bdrv-graph-mod /bdrv-graph-mod/should-update-child MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-blockjob -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob" PASS 4 ahci-test /x86_64/ahci/hba_spec ==9512==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-blockjob /blockjob/ids PASS 2 test-blockjob /blockjob/cancel/created PASS 3 test-blockjob /blockjob/cancel/running --- PASS 7 test-blockjob /blockjob/cancel/pending PASS 8 test-blockjob /blockjob/cancel/concluded MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-blockjob-txn -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-blockjob-txn" ==9514==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9518==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-blockjob-txn /single/success PASS 2 test-blockjob-txn /single/failure PASS 3 test-blockjob-txn /single/cancel --- PASS 7 test-blockjob-txn /pair/fail-cancel-race MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-block-backend -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-backend" PASS 5 ahci-test /x86_64/ahci/hba_enable ==9528==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-block-backend /block-backend/drain_aio_error PASS 2 test-block-backend /block-backend/drain_all_aio_error MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-block-iothread -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-block-iothread" ==9534==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-block-iothread /sync-op/pread PASS 2 test-block-iothread /sync-op/pwrite PASS 3 test-block-iothread /sync-op/load_vmstate --- PASS 14 test-block-iothread /propagate/basic PASS 15 test-block-iothread /propagate/diamond PASS 16 test-block-iothread /propagate/mirror ==9530==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-image-locking -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-image-locking" ==9559==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-image-locking /image-locking/basic PASS 2 test-image-locking /image-locking/set-perm-abort MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-x86-cpuid -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-x86-cpuid" --- PASS 3 test-xbzrle /xbzrle/encode_decode_unchanged PASS 4 test-xbzrle /xbzrle/encode_decode_1_byte PASS 5 test-xbzrle /xbzrle/encode_decode_overflow ==9568==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 test-xbzrle /xbzrle/encode_decode MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-vmstate -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-vmstate" PASS 7 ahci-test /x86_64/ahci/max --- PASS 133 test-cutils /cutils/strtosz/erange PASS 134 test-cutils /cutils/strtosz/metric MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-shift128 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-shift128" ==9583==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-shift128 /host-utils/test_lshift PASS 2 test-shift128 /host-utils/test_rshift MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-mul64 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-mul64" --- MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/rcutorture -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="rcutorture" PASS 8 ahci-test /x86_64/ahci/reset PASS 1 rcutorture /rcu/torture/1reader ==9616==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9616==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff29cf0000; bottom 0x7f6ef81fe000; size: 0x009031af2000 (619308851200) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 9 ahci-test /x86_64/ahci/io/pio/lba28/simple/zero PASS 2 rcutorture /rcu/torture/10readers MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-rcu-list -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-list" ==9638==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9638==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdb26ca000; bottom 0x7fa769ffe000; size: 0x0056486cc000 (370582274048) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 10 ahci-test /x86_64/ahci/io/pio/lba28/simple/low PASS 1 test-rcu-list /rcu/qlist/single-threaded ==9651==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9651==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffecbae8000; bottom 0x7f2cd15fe000; size: 0x00d1fa4ea000 (901847621632) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 2 test-rcu-list /rcu/qlist/short-few PASS 11 ahci-test /x86_64/ahci/io/pio/lba28/simple/high ==9684==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9684==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcdabe1000; bottom 0x7fa7fc3fe000; size: 0x0054de7e3000 (364510064640) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 12 ahci-test /x86_64/ahci/io/pio/lba28/double/zero ==9690==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9690==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffc9d4ba000; bottom 0x7f95075fe000; size: 0x006795ebc000 (444896886784) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 3 test-rcu-list /rcu/qlist/long-many MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-rcu-simpleq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-simpleq" PASS 13 ahci-test /x86_64/ahci/io/pio/lba28/double/low ==9701==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9701==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffee8a10000; bottom 0x7f346f5fe000; size: 0x00ca79412000 (869617704960) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 test-rcu-simpleq /rcu/qsimpleq/single-threaded PASS 14 ahci-test /x86_64/ahci/io/pio/lba28/double/high ==9715==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9715==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffa6e2d000; bottom 0x7f03065fe000; size: 0x00fca082f000 (1085024694272) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 2 test-rcu-simpleq /rcu/qsimpleq/short-few PASS 15 ahci-test /x86_64/ahci/io/pio/lba28/long/zero ==9742==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9742==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffea686a000; bottom 0x7f25fc5fe000; size: 0x00d8aa26c000 (930567602176) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 3 test-rcu-simpleq /rcu/qsimpleq/long-many PASS 16 ahci-test /x86_64/ahci/io/pio/lba28/long/low MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-rcu-tailq -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-rcu-tailq" ==9749==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9749==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd75317000; bottom 0x7f375a77c000; size: 0x00c61ab9b000 (850851901440) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 1 test-rcu-tailq /rcu/qtailq/single-threaded PASS 17 ahci-test /x86_64/ahci/io/pio/lba28/long/high ==9767==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 test-rcu-tailq /rcu/qtailq/short-few PASS 18 ahci-test /x86_64/ahci/io/pio/lba28/short/zero ==9794==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 19 ahci-test /x86_64/ahci/io/pio/lba28/short/low PASS 3 test-rcu-tailq /rcu/qtailq/long-many MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-qdist -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qdist" ==9800==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-qdist /qdist/none PASS 2 test-qdist /qdist/pr PASS 3 test-qdist /qdist/single/empty --- PASS 8 test-qdist /qdist/binning/shrink MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-qht -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht" PASS 20 ahci-test /x86_64/ahci/io/pio/lba28/short/high ==9815==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9815==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffec477b000; bottom 0x7f051b7fe000; size: 0x00f9a8f7d000 (1072281669632) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 21 ahci-test /x86_64/ahci/io/pio/lba48/simple/zero ==9821==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9821==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffef6123000; bottom 0x7f89945fe000; size: 0x007561b25000 (504150249472) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 22 ahci-test /x86_64/ahci/io/pio/lba48/simple/low ==9827==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9827==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fff11e69000; bottom 0x7f49a2bfe000; size: 0x00b56f26b000 (779253886976) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 23 ahci-test /x86_64/ahci/io/pio/lba48/simple/high ==9833==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9833==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd75931000; bottom 0x7efe7cbfe000; size: 0x00fef8d33000 (1095096283136) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 24 ahci-test /x86_64/ahci/io/pio/lba48/double/zero ==9839==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9839==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffd488de000; bottom 0x7f2a215fe000; size: 0x00d3272e0000 (906895425536) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 25 ahci-test /x86_64/ahci/io/pio/lba48/double/low ==9845==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9845==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe4cfd0000; bottom 0x7f7bcb7fe000; size: 0x0082817d2000 (560518209536) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 26 ahci-test /x86_64/ahci/io/pio/lba48/double/high ==9851==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9851==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7fffdb69e000; bottom 0x7f5722124000; size: 0x00a8b957a000 (724664033280) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 27 ahci-test /x86_64/ahci/io/pio/lba48/long/zero ==9857==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9857==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffcd407f000; bottom 0x7f3e971fe000; size: 0x00be3ce81000 (817065627648) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 28 ahci-test /x86_64/ahci/io/pio/lba48/long/low ==9863==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==9863==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffdd76fb000; bottom 0x7f86f87fe000; size: 0x0076deefd000 (510546399232) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 29 ahci-test /x86_64/ahci/io/pio/lba48/long/high ==9869==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 30 ahci-test /x86_64/ahci/io/pio/lba48/short/zero ==9875==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 31 ahci-test /x86_64/ahci/io/pio/lba48/short/low PASS 1 test-qht /qht/mode/default ==9881==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 test-qht /qht/mode/resize MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-qht-par -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qht-par" PASS 32 ahci-test /x86_64/ahci/io/pio/lba48/short/high ==9897==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-qht-par /qht/parallel/2threads-0%updates-1s PASS 33 ahci-test /x86_64/ahci/io/dma/lba28/fragmented ==9910==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 test-qht-par /qht/parallel/2threads-20%updates-1s MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-bitops -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bitops" PASS 1 test-bitops /bitops/sextract32 --- PASS 3 test-bitcnt /bitcnt/ctpop32 PASS 4 test-bitcnt /bitcnt/ctpop64 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-qdev-global-props -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qdev-global-props" ==9925==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-qdev-global-props /qdev/properties/static/default PASS 2 test-qdev-global-props /qdev/properties/static/global PASS 3 test-qdev-global-props /qdev/properties/dynamic/global --- PASS 18 test-qemu-opts /qemu-opts/to_qdict/filtered PASS 19 test-qemu-opts /qemu-opts/to_qdict/duplicates MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-keyval -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-keyval" ==9951==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-keyval /keyval/keyval_parse PASS 2 test-keyval /keyval/keyval_parse/list PASS 3 test-keyval /keyval/visit/bool --- PASS 4 test-crypto-hash /crypto/hash/digest PASS 5 test-crypto-hash /crypto/hash/base64 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-crypto-hmac -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-hmac" ==9973==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-crypto-hmac /crypto/hmac/iov PASS 2 test-crypto-hmac /crypto/hmac/alloc PASS 3 test-crypto-hmac /crypto/hmac/prealloc --- PASS 16 test-crypto-secret /crypto/secret/crypt/badiv MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-crypto-tlscredsx509 -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlscredsx509" PASS 37 ahci-test /x86_64/ahci/io/dma/lba28/simple/high ==10000==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectserver PASS 2 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/perfectclient PASS 38 ahci-test /x86_64/ahci/io/dma/lba28/double/zero PASS 3 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca1 PASS 4 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca2 ==10006==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 39 ahci-test /x86_64/ahci/io/dma/lba28/double/low PASS 5 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodca3 PASS 6 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca1 PASS 7 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca2 PASS 8 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badca3 ==10012==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver1 PASS 10 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver2 PASS 11 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver3 PASS 40 ahci-test /x86_64/ahci/io/dma/lba28/double/high ==10018==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 12 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver4 PASS 41 ahci-test /x86_64/ahci/io/dma/lba28/long/zero ==10024==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 13 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver5 PASS 42 ahci-test /x86_64/ahci/io/dma/lba28/long/low PASS 14 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver6 ==10030==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 15 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/goodserver7 PASS 16 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badserver1 PASS 17 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/badserver2 --- PASS 38 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingserver PASS 39 test-crypto-tlscredsx509 /qcrypto/tlscredsx509/missingclient MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-crypto-tlssession -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-tlssession" ==10036==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 44 ahci-test /x86_64/ahci/io/dma/lba28/short/zero ==10047==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 45 ahci-test /x86_64/ahci/io/dma/lba28/short/low ==10053==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-crypto-tlssession /qcrypto/tlssession/psk PASS 2 test-crypto-tlssession /qcrypto/tlssession/basicca PASS 46 ahci-test /x86_64/ahci/io/dma/lba28/short/high ==10059==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 test-crypto-tlssession /qcrypto/tlssession/differentca PASS 47 ahci-test /x86_64/ahci/io/dma/lba48/simple/zero ==10065==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 test-crypto-tlssession /qcrypto/tlssession/altname1 PASS 48 ahci-test /x86_64/ahci/io/dma/lba48/simple/low PASS 5 test-crypto-tlssession /qcrypto/tlssession/altname2 PASS 6 test-crypto-tlssession /qcrypto/tlssession/altname3 ==10071==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 test-crypto-tlssession /qcrypto/tlssession/altname4 PASS 8 test-crypto-tlssession /qcrypto/tlssession/altname5 PASS 49 ahci-test /x86_64/ahci/io/dma/lba48/simple/high PASS 9 test-crypto-tlssession /qcrypto/tlssession/altname6 PASS 10 test-crypto-tlssession /qcrypto/tlssession/wildcard1 ==10077==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 50 ahci-test /x86_64/ahci/io/dma/lba48/double/zero ==10083==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 51 ahci-test /x86_64/ahci/io/dma/lba48/double/low ==10089==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 52 ahci-test /x86_64/ahci/io/dma/lba48/double/high PASS 11 test-crypto-tlssession /qcrypto/tlssession/wildcard2 ==10095==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 12 test-crypto-tlssession /qcrypto/tlssession/wildcard3 PASS 13 test-crypto-tlssession /qcrypto/tlssession/wildcard4 PASS 53 ahci-test /x86_64/ahci/io/dma/lba48/long/zero ==10101==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 54 ahci-test /x86_64/ahci/io/dma/lba48/long/low PASS 14 test-crypto-tlssession /qcrypto/tlssession/wildcard5 PASS 15 test-crypto-tlssession /qcrypto/tlssession/wildcard6 ==10107==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 16 test-crypto-tlssession /qcrypto/tlssession/cachain MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-qga -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-qga" PASS 55 ahci-test /x86_64/ahci/io/dma/lba48/long/high --- PASS 15 test-qga /qga/invalid-cmd PASS 16 test-qga /qga/invalid-args PASS 17 test-qga /qga/fsfreeze-status ==10119==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 56 ahci-test /x86_64/ahci/io/dma/lba48/short/zero PASS 18 test-qga /qga/blacklist PASS 19 test-qga /qga/config PASS 20 test-qga /qga/guest-exec PASS 21 test-qga /qga/guest-exec-invalid ==10126==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 57 ahci-test /x86_64/ahci/io/dma/lba48/short/low ==10139==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 22 test-qga /qga/guest-get-osinfo PASS 23 test-qga /qga/guest-get-host-name PASS 24 test-qga /qga/guest-get-timezone --- PASS 4 test-io-task /crypto/task/thread_complete PASS 5 test-io-task /crypto/task/thread_failure MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-io-channel-socket -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-socket" ==10163==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-io-channel-socket /io/channel/socket/ipv4-sync PASS 2 test-io-channel-socket /io/channel/socket/ipv4-async PASS 3 test-io-channel-socket /io/channel/socket/ipv4-fd --- PASS 5 test-io-channel-file /io/channel/pipe/async MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-io-channel-tls -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-tls" PASS 59 ahci-test /x86_64/ahci/io/ncq/simple ==10246==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-io-channel-tls /qio/channel/tls/basic MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-io-channel-command -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-io-channel-command" PASS 1 test-io-channel-command /io/channel/command/fifo/sync --- PASS 17 test-crypto-pbkdf /crypto/pbkdf/nonrfc/sha384/iter1200 PASS 18 test-crypto-pbkdf /crypto/pbkdf/nonrfc/ripemd160/iter1200 MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-crypto-ivgen -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-crypto-ivgen" ==10267==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-crypto-ivgen /crypto/ivgen/plain/1 PASS 2 test-crypto-ivgen /crypto/ivgen/plain/1f2e3d4c PASS 3 test-crypto-ivgen /crypto/ivgen/plain/1f2e3d4c5b6a7988 --- PASS 1 test-logging /logging/parse_range PASS 2 test-logging /logging/parse_path MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-replication -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-replication" ==10297==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10308==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 1 test-replication /replication/primary/read PASS 2 test-replication /replication/primary/write PASS 62 ahci-test /x86_64/ahci/flush/retry --- PASS 4 test-replication /replication/primary/stop PASS 5 test-replication /replication/primary/do_checkpoint PASS 6 test-replication /replication/primary/get_error_all ==10317==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 test-replication /replication/secondary/read ==10322==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 test-replication /replication/secondary/write PASS 63 ahci-test /x86_64/ahci/flush/migrate ==10308==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe7b9a3000; bottom 0x7f469bafc000; size: 0x00b7dfea7000 (789735698432) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 ==10331==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 test-replication /replication/secondary/start ==10352==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 64 ahci-test /x86_64/ahci/migrate/sanity PASS 10 test-replication /replication/secondary/stop ==10361==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10366==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 11 test-replication /replication/secondary/do_checkpoint PASS 12 test-replication /replication/secondary/get_error_all PASS 65 ahci-test /x86_64/ahci/migrate/dma/simple MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} tests/test-bufferiszero -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-bufferiszero" ==10376==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10384==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 66 ahci-test /x86_64/ahci/migrate/dma/halted ==10393==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10399==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 67 ahci-test /x86_64/ahci/migrate/ncq/simple ==10408==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10413==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 68 ahci-test /x86_64/ahci/migrate/ncq/halted ==10422==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 69 ahci-test /x86_64/ahci/cdrom/eject ==10427==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 70 ahci-test /x86_64/ahci/cdrom/dma/single ==10433==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 71 ahci-test /x86_64/ahci/cdrom/dma/multi ==10439==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 72 ahci-test /x86_64/ahci/cdrom/pio/single ==10445==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! ==10445==WARNING: ASan is ignoring requested __asan_handle_no_return: stack top: 0x7ffe71ecc000; bottom 0x7f4b399fe000; size: 0x00b3384ce000 (769743708160) False positive error reports may follow For details see https://github.com/google/sanitizers/issues/189 PASS 73 ahci-test /x86_64/ahci/cdrom/pio/multi ==10451==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 74 ahci-test /x86_64/ahci/cdrom/pio/bcl MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(( ${RANDOM:-0} % 255 + 1))} QTEST_QEMU_BINARY=x86_64-softmmu/qemu-system-x86_64 QTEST_QEMU_IMG=qemu-img tests/hd-geo-test -m=quick -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="hd-geo-test" PASS 1 hd-geo-test /x86_64/hd-geo/ide/none ==10465==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 2 hd-geo-test /x86_64/hd-geo/ide/drive/cd_0 ==10471==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 3 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/blank ==10477==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 4 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/lba ==10483==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 5 hd-geo-test /x86_64/hd-geo/ide/drive/mbr/chs ==10489==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 6 hd-geo-test /x86_64/hd-geo/ide/device/mbr/blank ==10495==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 7 hd-geo-test /x86_64/hd-geo/ide/device/mbr/lba ==10501==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 8 hd-geo-test /x86_64/hd-geo/ide/device/mbr/chs ==10507==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 9 hd-geo-test /x86_64/hd-geo/ide/device/user/chs ==10512==WARNING: ASan doesn't fully support makecontext/swapcontext functions and may produce false positives in some cases! PASS 10 hd-geo-test /x86_64/hd-geo/ide/device/user/chst sh: qemu-img: command not found ** ERROR:/tmp/qemu-test/src/tests/hd-geo-test.c:478:create_qcow2_with_mbr: assertion failed: (ret == 0) ERROR - Bail out! ERROR:/tmp/qemu-test/src/tests/hd-geo-test.c:478:create_qcow2_with_mbr: assertion failed: (ret == 0) make: *** [/tmp/qemu-test/src/tests/Makefile.include:894: check-qtest-x86_64] Error 1 make: *** Waiting for unfinished jobs.... PASS 1 test-bufferiszero /cutils/bufferiszero The full log is available at http://patchew.org/logs/20190617150950.5264-1-shmuel.eiderman@oracle.com/testing.asan/?type=message. --- Email generated automatically by Patchew [https://patchew.org/]. Please send your feedback to patchew-devel@redhat.com ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [Qemu-devel] [SeaBIOS] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman ` (8 preceding siblings ...) 2019-06-17 16:31 ` [Qemu-devel] [SeaBIOS] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface no-reply @ 2019-06-17 16:45 ` no-reply 9 siblings, 0 replies; 11+ messages in thread From: no-reply @ 2019-06-17 16:45 UTC (permalink / raw) To: shmuel.eiderman Cc: kwolf, qemu-block, arbel.moshe, seabios, qemu-devel, mreitz, kevin, kraxel, karl.heubaum Patchew URL: https://patchew.org/QEMU/20190617150950.5264-1-shmuel.eiderman@oracle.com/ Hi, This series seems to have some coding style problems. See output below for more information: Message-id: 20190617150950.5264-1-shmuel.eiderman@oracle.com Type: series Subject: [SeaBIOS] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface === TEST SCRIPT BEGIN === #!/bin/bash git rev-parse base > /dev/null || exit 0 git config --local diff.renamelimit 0 git config --local diff.renames True git config --local diff.algorithm histogram ./scripts/checkpatch.pl --mailback base.. === TEST SCRIPT END === From https://github.com/patchew-project/qemu 5d0e569..076243f master -> master From https://github.com/patchew-project/qemu * [new tag] patchew/20190617150950.5264-1-shmuel.eiderman@oracle.com -> patchew/20190617150950.5264-1-shmuel.eiderman@oracle.com Switched to a new branch 'test' fd108cd hd-geo-test: Add tests for lchs override 48924b4 bootdevice: FW_CFG interface for LCHS values a5d9c05 bootdevice: Refactor get_boot_devices_list 4bbd8b3 bootdevice: Gather LCHS from all relevant devices 0c1a116 scsi: Propagate unrealize() callback to scsi-hd e67cc65 bootdevice: Add interface to gather LCHS 4ee45e1 block: Support providing LCHS from user 20c9570 block: Refactor macros - fix tabbing === OUTPUT BEGIN === 1/8 Checking commit 20c9570c533d (block: Refactor macros - fix tabbing) ERROR: Macros with complex values should be enclosed in parenthesis #55: FILE: include/hw/block/block.h:65: +#define DEFINE_BLOCK_CHS_PROPERTIES(_state, _conf) \ + DEFINE_PROP_UINT32("cyls", _state, _conf.cyls, 0), \ + DEFINE_PROP_UINT32("heads", _state, _conf.heads, 0), \ DEFINE_PROP_UINT32("secs", _state, _conf.secs, 0) total: 1 errors, 0 warnings, 37 lines checked Patch 1/8 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. 2/8 Checking commit 4ee45e1aba23 (block: Support providing LCHS from user) 3/8 Checking commit e67cc65e5e42 (bootdevice: Add interface to gather LCHS) 4/8 Checking commit 0c1a116c12b8 (scsi: Propagate unrealize() callback to scsi-hd) 5/8 Checking commit 4bbd8b3f99c7 (bootdevice: Gather LCHS from all relevant devices) 6/8 Checking commit a5d9c05dfa78 (bootdevice: Refactor get_boot_devices_list) 7/8 Checking commit 48924b42fc79 (bootdevice: FW_CFG interface for LCHS values) 8/8 Checking commit fd108cda4981 (hd-geo-test: Add tests for lchs override) WARNING: Block comments use a leading /* on a separate line #625: FILE: tests/hd-geo-test.c:980: + "skipping hd-geo/override/* tests"); total: 0 errors, 1 warnings, 593 lines checked Patch 8/8 has style problems, please review. If any of these errors are false positives report them to the maintainer, see CHECKPATCH in MAINTAINERS. === OUTPUT END === Test command exited with code: 1 The full log is available at http://patchew.org/logs/20190617150950.5264-1-shmuel.eiderman@oracle.com/testing.checkpatch/?type=message. --- Email generated automatically by Patchew [https://patchew.org/]. Please send your feedback to patchew-devel@redhat.com ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2019-06-17 17:23 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-06-17 15:09 [Qemu-devel] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 1/8] block: Refactor macros - fix tabbing Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 2/8] block: Support providing LCHS from user Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 3/8] bootdevice: Add interface to gather LCHS Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 4/8] scsi: Propagate unrealize() callback to scsi-hd Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 5/8] bootdevice: Gather LCHS from all relevant devices Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 6/8] bootdevice: Refactor get_boot_devices_list Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 7/8] bootdevice: FW_CFG interface for LCHS values Sam Eiderman 2019-06-17 15:09 ` [Qemu-devel] [QEMU] [PATCH v3 8/8] hd-geo-test: Add tests for lchs override Sam Eiderman 2019-06-17 16:31 ` [Qemu-devel] [SeaBIOS] [QEMU] [PATCH v3 0/8] Add Qemu to SeaBIOS LCHS interface no-reply 2019-06-17 16:45 ` no-reply
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).