提交 9b748c5e 编写于 作者: P Peter Maydell

Merge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-pull-request' into staging

trivial patches pull request (20190206)

- acpi: remove unused functions/variables
- tests: remove useless architecture checks
- some typo fixes and documentation update
- flash_cfi02: fix memory leak

# gpg: Signature made Wed 06 Mar 2019 11:05:12 GMT
# gpg:                using RSA key F30C38BD3F2FBE3C
# gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full]
# gpg:                 aka "Laurent Vivier <laurent@vivier.eu>" [full]
# gpg:                 aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full]
# Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F  5173 F30C 38BD 3F2F BE3C

* remotes/vivier2/tags/trivial-branch-pull-request:
  thunk: fix of malloc to g_new
  hostmem-file: simplify ifdef-s in file_backend_memory_alloc()
  build: Correct explanation of unnest-vars example
  bswap: Fix accessors syntax in comment
  doc: fix typos for documents in tree
  block/pflash_cfi02: Fix memory leak and potential use-after-free
  hw/acpi: remove unnecessary variable acpi_table_builtin
  hw/acpi: remove unused function acpi_table_add_builtin()
  hw/i386/pc.c: remove unused function pc_acpi_init()
  tests: Remove (mostly) useless architecture checks
Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
...@@ -41,10 +41,12 @@ struct HostMemoryBackendFile { ...@@ -41,10 +41,12 @@ struct HostMemoryBackendFile {
static void static void
file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
{ {
#ifndef CONFIG_POSIX
error_setg(errp, "backend '%s' not supported on this host",
object_get_typename(OBJECT(backend)));
#else
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(backend); HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(backend);
#ifdef CONFIG_POSIX
gchar *name; gchar *name;
#endif
if (!backend->size) { if (!backend->size) {
error_setg(errp, "can't create backend with size 0"); error_setg(errp, "can't create backend with size 0");
...@@ -54,9 +56,6 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) ...@@ -54,9 +56,6 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp)
error_setg(errp, "mem-path property not set"); error_setg(errp, "mem-path property not set");
return; return;
} }
#ifndef CONFIG_POSIX
error_setg(errp, "-mem-path not supported on this host");
#else
backend->force_prealloc = mem_prealloc; backend->force_prealloc = mem_prealloc;
name = host_memory_backend_get_name(backend); name = host_memory_backend_get_name(backend);
memory_region_init_ram_from_file(&backend->mr, OBJECT(backend), memory_region_init_ram_from_file(&backend->mr, OBJECT(backend),
......
...@@ -102,7 +102,7 @@ to make sure the state of VM in Secondary side is always consistent with VM in ...@@ -102,7 +102,7 @@ to make sure the state of VM in Secondary side is always consistent with VM in
Primary side. Primary side.
COLO Proxy: COLO Proxy:
Delivers packets to Primary and Seconday, and then compare the responses from Delivers packets to Primary and Secondary, and then compare the responses from
both side. Then decide whether to start a checkpoint according to some rules. both side. Then decide whether to start a checkpoint according to some rules.
Please refer to docs/colo-proxy.txt for more information. Please refer to docs/colo-proxy.txt for more information.
......
...@@ -97,7 +97,7 @@ References ...@@ -97,7 +97,7 @@ References
AMD Memory Encryption whitepaper: AMD Memory Encryption whitepaper:
http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2013/12/AMD_Memory_Encryption_Whitepaper_v7-Public.pdf
Secure Encrypted Virutualization Key Management: Secure Encrypted Virtualization Key Management:
[1] http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf [1] http://support.amd.com/TechDocs/55766_SEV-KM API_Specification.pdf
KVM Forum slides: KVM Forum slides:
......
...@@ -99,7 +99,7 @@ Links to other resources ...@@ -99,7 +99,7 @@ Links to other resources
https://gitlab.fel.cvut.cz/canbus/qemu-canbus https://gitlab.fel.cvut.cz/canbus/qemu-canbus
(3) RTEMS page describing project (3) RTEMS page describing project
https://devel.rtems.org/wiki/Developer/Simulators/QEMU/CANEmulation https://devel.rtems.org/wiki/Developer/Simulators/QEMU/CANEmulation
(4) RTLWS 2015 article about the projevt and its use with CANopen emulation (4) RTLWS 2015 article about the project and its use with CANopen emulation
http://rtime.felk.cvut.cz/publications/public/rtlws2015-qemu-can.pdf http://rtime.felk.cvut.cz/publications/public/rtlws2015-qemu-can.pdf
Slides Slides
http://rtime.felk.cvut.cz/publications/public/rtlws2015-qemu-can-slides.pdf http://rtime.felk.cvut.cz/publications/public/rtlws2015-qemu-can-slides.pdf
......
...@@ -41,7 +41,7 @@ Below is a COLO proxy ascii figure: ...@@ -41,7 +41,7 @@ Below is a COLO proxy ascii figure:
| | +------------------------------------------------------+ | | | | | | +------------------------------------------------------+ | | | |
|netfilter| | | | | | netfilter | | | |netfilter| | | | | | netfilter | | |
| +----------+ +----------------------------+ | | | +-----------------------------------------------------------+ | | +----------+ +----------------------------+ | | | +-----------------------------------------------------------+ |
| | | | | | out | | | | | | filter excute order | | | | | | | | out | | | | | | filter execute order | |
| | | | +-----------------------------+ | | | | | | +-------------------> | | | | | | +-----------------------------+ | | | | | | +-------------------> | |
| | | | | | | | | | | | | | TCP | | | | | | | | | | | | | | | | TCP | |
| | +-----+--+-+ +-----v----+ +-----v----+ |pri +----+----+sec| | | | +------------+ +---+----+---v+rewriter++ +------------+ | | | | +-----+--+-+ +-----v----+ +-----v----+ |pri +----+----+sec| | | | +------------+ +---+----+---v+rewriter++ +------------+ | |
...@@ -53,7 +53,7 @@ Below is a COLO proxy ascii figure: ...@@ -53,7 +53,7 @@ Below is a COLO proxy ascii figure:
| | | tx | rx rx | | | | | tx all | rx | | | | | tx | rx rx | | | | | tx all | rx | |
| | | | | | | | +-----------------------------------------------------------+ | | | | | | | | | +-----------------------------------------------------------+ |
| | | +--------------+ | | | | | | | | | +--------------+ | | | | | |
| | | filter excute order | | | | | | | | | | filter execute order | | | | | | |
| | | +----------------> | | | +--------------------------------------------------------+ | | | | +----------------> | | | +--------------------------------------------------------+ |
| +-----------------------------------------+ | | | | +-----------------------------------------+ | | |
| | | | | | | | | | | |
...@@ -92,7 +92,7 @@ but do nothing, just pass to next filter. ...@@ -92,7 +92,7 @@ but do nothing, just pass to next filter.
Redirect Server Filter --> COLO-Compare Redirect Server Filter --> COLO-Compare
COLO-compare receive primary guest packet then COLO-compare receive primary guest packet then
waiting scondary redirect packet to compare it. waiting secondary redirect packet to compare it.
If packet same,send queued primary packet and clear If packet same,send queued primary packet and clear
queued secondary packet, Otherwise send primary packet queued secondary packet, Otherwise send primary packet
and do checkpoint. and do checkpoint.
......
...@@ -137,6 +137,6 @@ From the 'qmp-shell', invoke the QMP ``device_del`` command:: ...@@ -137,6 +137,6 @@ From the 'qmp-shell', invoke the QMP ``device_del`` command::
vCPU hot-unplug requires guest cooperation; so the ``device_del`` vCPU hot-unplug requires guest cooperation; so the ``device_del``
command above does not guarantee vCPU removal -- it's a "request to command above does not guarantee vCPU removal -- it's a "request to
unplug". At this point, the guest will get a System Control unplug". At this point, the guest will get a System Control
Interupt (SCI) and calls the ACPI handler for the affected vCPU Interrupt (SCI) and calls the ACPI handler for the affected vCPU
device. Then the guest kernel will bring the vCPU offline and tell device. Then the guest kernel will bring the vCPU offline and tell
QEMU to unplug it. QEMU to unplug it.
...@@ -55,7 +55,7 @@ value can improve the I/O performance significantly. ...@@ -55,7 +55,7 @@ value can improve the I/O performance significantly.
The refcount blocks The refcount blocks
------------------- -------------------
The qcow2 format also mantains a reference count for each cluster. The qcow2 format also maintains a reference count for each cluster.
Reference counts are used for cluster allocation and internal Reference counts are used for cluster allocation and internal
snapshots. The data is stored in a two-level structure similar to the snapshots. The data is stored in a two-level structure similar to the
L1/L2 tables described above. L1/L2 tables described above.
......
...@@ -632,7 +632,7 @@ qemu-system-i386 -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \ ...@@ -632,7 +632,7 @@ qemu-system-i386 -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
@end example @end example
Howto set up a simple iSCSI target on loopback and accessing it via QEMU: How to set up a simple iSCSI target on loopback and access it via QEMU:
@example @example
This example shows how to set up an iSCSI target with one CDROM and one DISK This example shows how to set up an iSCSI target with one CDROM and one DISK
using the Linux STGT software target. This target is available on Red Hat based using the Linux STGT software target. This target is available on Red Hat based
......
...@@ -49,7 +49,7 @@ live migration safe. ...@@ -49,7 +49,7 @@ live migration safe.
The information that follows provides recommendations for configuring The information that follows provides recommendations for configuring
CPU models on x86 hosts. The goals are to maximise performance, while CPU models on x86 hosts. The goals are to maximise performance, while
protecting guest OS against various CPU hardware flaws, and optionally protecting guest OS against various CPU hardware flaws, and optionally
enabling live migration between hosts with hetergeneous CPU models. enabling live migration between hosts with heterogeneous CPU models.
@menu @menu
* preferred_cpu_models_intel_x86:: Preferred CPU models for Intel x86 hosts * preferred_cpu_models_intel_x86:: Preferred CPU models for Intel x86 hosts
...@@ -287,7 +287,7 @@ Must be explicitly turned on for all AMD CPU models. ...@@ -287,7 +287,7 @@ Must be explicitly turned on for all AMD CPU models.
This provides higher performance than virt-ssbd so should be This provides higher performance than virt-ssbd so should be
exposed to guests whenever available in the host. virt-ssbd exposed to guests whenever available in the host. virt-ssbd
should none the less also be exposed for maximum guest should none the less also be exposed for maximum guest
compatability as some kernels only know about virt-ssbd. compatibility as some kernels only know about virt-ssbd.
@item @code{amd-no-ssb} @item @code{amd-no-ssb}
...@@ -296,7 +296,7 @@ Recommended to indicate the host is not vulnerable CVE-2018-3639 ...@@ -296,7 +296,7 @@ Recommended to indicate the host is not vulnerable CVE-2018-3639
Not included by default in any AMD CPU model. Not included by default in any AMD CPU model.
Future hardware genarations of CPU will not be vulnerable to Future hardware generations of CPU will not be vulnerable to
CVE-2018-3639, and thus the guest should be told not to enable CVE-2018-3639, and thus the guest should be told not to enable
its mitigations, by exposing amd-no-ssb. This is mutually its mitigations, by exposing amd-no-ssb. This is mutually
exclusive with virt-ssbd and amd-ssbd. exclusive with virt-ssbd and amd-ssbd.
...@@ -451,7 +451,7 @@ MIPS64 Processor (Release 6, 2014) ...@@ -451,7 +451,7 @@ MIPS64 Processor (Release 6, 2014)
@item @code{Loongson-2F} @item @code{Loongson-2F}
MIPS64 Processor (Longsoon 2, 2008) MIPS64 Processor (Loongson 2, 2008)
@item @code{Loongson-2E} @item @code{Loongson-2E}
......
...@@ -30,7 +30,7 @@ of the significantly lower latency and higher throughput over TCP/IP. This is ...@@ -30,7 +30,7 @@ of the significantly lower latency and higher throughput over TCP/IP. This is
because the RDMA I/O architecture reduces the number of interrupts and because the RDMA I/O architecture reduces the number of interrupts and
data copies by bypassing the host networking stack. In particular, a TCP-based data copies by bypassing the host networking stack. In particular, a TCP-based
migration, under certain types of memory-bound workloads, may take a more migration, under certain types of memory-bound workloads, may take a more
unpredicatable amount of time to complete the migration if the amount of unpredictable amount of time to complete the migration if the amount of
memory tracked during each live migration iteration round cannot keep pace memory tracked during each live migration iteration round cannot keep pace
with the rate of dirty memory produced by the workload. with the rate of dirty memory produced by the workload.
...@@ -408,7 +408,7 @@ socket is broken during a non-RDMA based migration. ...@@ -408,7 +408,7 @@ socket is broken during a non-RDMA based migration.
TODO: TODO:
===== =====
1. Currently, 'ulimit -l' mlock() limits as well as cgroups swap limits 1. Currently, 'ulimit -l' mlock() limits as well as cgroups swap limits
are not compatible with infinband memory pinning and will result in are not compatible with infiniband memory pinning and will result in
an aborted migration (but with the source VM left unaffected). an aborted migration (but with the source VM left unaffected).
2. Use of the recent /proc/<pid>/pagemap would likely speed up 2. Use of the recent /proc/<pid>/pagemap would likely speed up
the use of KSM and ballooning while using RDMA. the use of KSM and ballooning while using RDMA.
......
...@@ -290,7 +290,7 @@ E.g., '-serial stdio' in record mode, and '-serial null' in replay mode. ...@@ -290,7 +290,7 @@ E.g., '-serial stdio' in record mode, and '-serial null' in replay mode.
Replay log format Replay log format
----------------- -----------------
Record/replay log consits of the header and the sequence of execution Record/replay log consists of the header and the sequence of execution
events. The header includes 4-byte replay version id and 8-byte reserved events. The header includes 4-byte replay version id and 8-byte reserved
field. Version is updated every time replay log format changes to prevent field. Version is updated every time replay log format changes to prevent
using replay log created by another build of qemu. using replay log created by another build of qemu.
......
...@@ -671,7 +671,7 @@ These are the steps: ...@@ -671,7 +671,7 @@ These are the steps:
-> IOMMU Hardware Support -> IOMMU Hardware Support
select S390 AP IOMMU Support select S390 AP IOMMU Support
-> VFIO Non-Privileged userspace driver framework -> VFIO Non-Privileged userspace driver framework
-> Mediated device driver frramework -> Mediated device driver framework
-> VFIO driver for Mediated devices -> VFIO driver for Mediated devices
-> I/O subsystem -> I/O subsystem
-> VFIO support for AP devices -> VFIO support for AP devices
......
...@@ -307,14 +307,6 @@ out: ...@@ -307,14 +307,6 @@ out:
error_propagate(errp, err); error_propagate(errp, err);
} }
static bool acpi_table_builtin = false;
void acpi_table_add_builtin(const QemuOpts *opts, Error **errp)
{
acpi_table_builtin = true;
acpi_table_add(opts, errp);
}
unsigned acpi_table_len(void *current) unsigned acpi_table_len(void *current)
{ {
struct acpi_table_header *hdr = current - sizeof(hdr->_length); struct acpi_table_header *hdr = current - sizeof(hdr->_length);
...@@ -330,7 +322,7 @@ void *acpi_table_hdr(void *h) ...@@ -330,7 +322,7 @@ void *acpi_table_hdr(void *h)
uint8_t *acpi_table_first(void) uint8_t *acpi_table_first(void)
{ {
if (acpi_table_builtin || !acpi_tables) { if (!acpi_tables) {
return NULL; return NULL;
} }
return acpi_table_hdr(acpi_tables + ACPI_TABLE_PFX_SIZE); return acpi_table_hdr(acpi_tables + ACPI_TABLE_PFX_SIZE);
......
...@@ -84,7 +84,7 @@ struct pflash_t { ...@@ -84,7 +84,7 @@ struct pflash_t {
uint16_t unlock_addr0; uint16_t unlock_addr0;
uint16_t unlock_addr1; uint16_t unlock_addr1;
uint8_t cfi_table[0x52]; uint8_t cfi_table[0x52];
QEMUTimer *timer; QEMUTimer timer;
/* The device replicates the flash memory across its memory space. Emulate /* The device replicates the flash memory across its memory space. Emulate
* that by having a container (.mem) filled with an array of aliases * that by having a container (.mem) filled with an array of aliases
* (.mem_mappings) pointing to the flash memory (.orig_mem). * (.mem_mappings) pointing to the flash memory (.orig_mem).
...@@ -429,7 +429,7 @@ static void pflash_write (pflash_t *pfl, hwaddr offset, ...@@ -429,7 +429,7 @@ static void pflash_write (pflash_t *pfl, hwaddr offset,
} }
pfl->status = 0x00; pfl->status = 0x00;
/* Let's wait 5 seconds before chip erase is done */ /* Let's wait 5 seconds before chip erase is done */
timer_mod(pfl->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + timer_mod(&pfl->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +
(NANOSECONDS_PER_SECOND * 5)); (NANOSECONDS_PER_SECOND * 5));
break; break;
case 0x30: case 0x30:
...@@ -444,7 +444,7 @@ static void pflash_write (pflash_t *pfl, hwaddr offset, ...@@ -444,7 +444,7 @@ static void pflash_write (pflash_t *pfl, hwaddr offset,
} }
pfl->status = 0x00; pfl->status = 0x00;
/* Let's wait 1/2 second before sector erase is done */ /* Let's wait 1/2 second before sector erase is done */
timer_mod(pfl->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + timer_mod(&pfl->timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) +
(NANOSECONDS_PER_SECOND / 2)); (NANOSECONDS_PER_SECOND / 2));
break; break;
default: default:
...@@ -596,7 +596,7 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp) ...@@ -596,7 +596,7 @@ static void pflash_cfi02_realize(DeviceState *dev, Error **errp)
pfl->rom_mode = 1; pfl->rom_mode = 1;
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &pfl->mem); sysbus_init_mmio(SYS_BUS_DEVICE(dev), &pfl->mem);
pfl->timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, pflash_timer, pfl); timer_init_ns(&pfl->timer, QEMU_CLOCK_VIRTUAL, pflash_timer, pfl);
pfl->wcycle = 0; pfl->wcycle = 0;
pfl->cmd = 0; pfl->cmd = 0;
pfl->status = 0; pfl->status = 0;
...@@ -695,11 +695,18 @@ static Property pflash_cfi02_properties[] = { ...@@ -695,11 +695,18 @@ static Property pflash_cfi02_properties[] = {
DEFINE_PROP_END_OF_LIST(), DEFINE_PROP_END_OF_LIST(),
}; };
static void pflash_cfi02_unrealize(DeviceState *dev, Error **errp)
{
pflash_t *pfl = CFI_PFLASH02(dev);
timer_del(&pfl->timer);
}
static void pflash_cfi02_class_init(ObjectClass *klass, void *data) static void pflash_cfi02_class_init(ObjectClass *klass, void *data)
{ {
DeviceClass *dc = DEVICE_CLASS(klass); DeviceClass *dc = DEVICE_CLASS(klass);
dc->realize = pflash_cfi02_realize; dc->realize = pflash_cfi02_realize;
dc->unrealize = pflash_cfi02_unrealize;
dc->props = pflash_cfi02_properties; dc->props = pflash_cfi02_properties;
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
} }
......
...@@ -1688,33 +1688,6 @@ void pc_pci_as_mapping_init(Object *owner, MemoryRegion *system_memory, ...@@ -1688,33 +1688,6 @@ void pc_pci_as_mapping_init(Object *owner, MemoryRegion *system_memory,
pci_address_space, -1); pci_address_space, -1);
} }
void pc_acpi_init(const char *default_dsdt)
{
char *filename;
if (acpi_tables != NULL) {
/* manually set via -acpitable, leave it alone */
return;
}
filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, default_dsdt);
if (filename == NULL) {
warn_report("failed to find %s", default_dsdt);
} else {
QemuOpts *opts = qemu_opts_create(qemu_find_opts("acpi"), NULL, 0,
&error_abort);
Error *err = NULL;
qemu_opt_set(opts, "file", filename, &error_abort);
acpi_table_add_builtin(opts, &err);
if (err) {
warn_reportf_err(err, "failed to load %s: ", filename);
}
g_free(filename);
}
}
void xen_load_linux(PCMachineState *pcms) void xen_load_linux(PCMachineState *pcms)
{ {
int i; int i;
......
...@@ -190,7 +190,6 @@ uint8_t *acpi_table_first(void); ...@@ -190,7 +190,6 @@ uint8_t *acpi_table_first(void);
uint8_t *acpi_table_next(uint8_t *current); uint8_t *acpi_table_next(uint8_t *current);
unsigned acpi_table_len(void *current); unsigned acpi_table_len(void *current);
void acpi_table_add(const QemuOpts *opts, Error **errp); void acpi_table_add(const QemuOpts *opts, Error **errp);
void acpi_table_add_builtin(const QemuOpts *opts, Error **errp);
typedef struct AcpiSlicOem AcpiSlicOem; typedef struct AcpiSlicOem AcpiSlicOem;
struct AcpiSlicOem { struct AcpiSlicOem {
......
...@@ -189,7 +189,6 @@ void pc_acpi_smi_interrupt(void *opaque, int irq, int level); ...@@ -189,7 +189,6 @@ void pc_acpi_smi_interrupt(void *opaque, int irq, int level);
void pc_cpus_init(PCMachineState *pcms); void pc_cpus_init(PCMachineState *pcms);
void pc_hot_add_cpu(const int64_t id, Error **errp); void pc_hot_add_cpu(const int64_t id, Error **errp);
void pc_acpi_init(const char *default_dsdt);
void pc_guest_info_init(PCMachineState *pcms); void pc_guest_info_init(PCMachineState *pcms);
......
...@@ -255,9 +255,9 @@ typedef union { ...@@ -255,9 +255,9 @@ typedef union {
/* /*
* the generic syntax is: * the generic syntax is:
* *
* load: ld{type}{sign}{size}{endian}_p(ptr) * load: ld{type}{sign}{size}_{endian}_p(ptr)
* *
* store: st{type}{size}{endian}_p(ptr, val) * store: st{type}{size}_{endian}_p(ptr, val)
* *
* Note there are small differences with the softmmu access API! * Note there are small differences with the softmmu access API!
* *
...@@ -293,10 +293,10 @@ typedef union { ...@@ -293,10 +293,10 @@ typedef union {
* *
* For cases where the size to be used is not fixed at compile time, * For cases where the size to be used is not fixed at compile time,
* there are * there are
* stn{endian}_p(ptr, sz, val) * stn_{endian}_p(ptr, sz, val)
* which stores @val to @ptr as an @endian-order number @sz bytes in size * which stores @val to @ptr as an @endian-order number @sz bytes in size
* and * and
* ldn{endian}_p(ptr, sz) * ldn_{endian}_p(ptr, sz)
* which loads @sz bytes from @ptr as an unsigned @endian-order number * which loads @sz bytes from @ptr as an unsigned @endian-order number
* and returns it in a uint64_t. * and returns it in a uint64_t.
*/ */
......
...@@ -327,7 +327,7 @@ endef ...@@ -327,7 +327,7 @@ endef
# ../water/ice.mo-libs = -licemaker # ../water/ice.mo-libs = -licemaker
# ../water/ice.mo-objs = ../water/ice1.o ../water/ice2.o # ../water/ice.mo-objs = ../water/ice1.o ../water/ice2.o
# #
# Note that 'hot' didn't include 'season/' in the input, so 'summer.o' is not # Note that 'hot' didn't include 'water/' in the input, so 'steam.o' is not
# included. # included.
# #
define unnest-vars define unnest-vars
......
...@@ -548,16 +548,9 @@ static void fuzz_registers(void) ...@@ -548,16 +548,9 @@ static void fuzz_registers(void)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
const char *arch = qtest_get_arch();
int fd; int fd;
int ret; int ret;
/* Check architecture */
if (strcmp(arch, "i386") && strcmp(arch, "x86_64")) {
g_test_message("Skipping test for non-x86\n");
return 0;
}
/* Create a temporary raw image */ /* Create a temporary raw image */
fd = mkstemp(test_image); fd = mkstemp(test_image);
g_assert(fd >= 0); g_assert(fd >= 0);
......
...@@ -1009,16 +1009,9 @@ static void test_cdrom_dma(void) ...@@ -1009,16 +1009,9 @@ static void test_cdrom_dma(void)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
const char *arch = qtest_get_arch();
int fd; int fd;
int ret; int ret;
/* Check architecture */
if (strcmp(arch, "i386") && strcmp(arch, "x86_64")) {
g_test_message("Skipping test for non-x86\n");
return 0;
}
/* Create temporary blkdebug instructions */ /* Create temporary blkdebug instructions */
fd = mkstemp(debug_path); fd = mkstemp(debug_path);
g_assert(fd >= 0); g_assert(fd >= 0);
......
...@@ -400,15 +400,8 @@ static void open_socket(void) ...@@ -400,15 +400,8 @@ static void open_socket(void)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
const char *arch = qtest_get_arch();
int ret; int ret;
/* Check architecture */
if (strcmp(arch, "i386") && strcmp(arch, "x86_64")) {
g_test_message("Skipping test for non-x86\n");
return 0;
}
open_socket(); open_socket();
/* Run the tests */ /* Run the tests */
......
...@@ -263,16 +263,9 @@ static void test_enable_irq(void) ...@@ -263,16 +263,9 @@ static void test_enable_irq(void)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
const char *arch = qtest_get_arch();
char *cmdline; char *cmdline;
int ret; int ret;
/* Check architecture */
if (strcmp(arch, "i386") && strcmp(arch, "x86_64")) {
g_test_message("Skipping test for non-x86\n");
return 0;
}
/* Run the tests */ /* Run the tests */
g_test_init(&argc, &argv, NULL); g_test_init(&argc, &argv, NULL);
......
...@@ -89,7 +89,7 @@ void thunk_register_struct(int id, const char *name, const argtype *types) ...@@ -89,7 +89,7 @@ void thunk_register_struct(int id, const char *name, const argtype *types)
for(i = 0;i < 2; i++) { for(i = 0;i < 2; i++) {
offset = 0; offset = 0;
max_align = 1; max_align = 1;
se->field_offsets[i] = malloc(nb_fields * sizeof(int)); se->field_offsets[i] = g_new(int, nb_fields);
type_ptr = se->field_types; type_ptr = se->field_types;
for(j = 0;j < nb_fields; j++) { for(j = 0;j < nb_fields; j++) {
size = thunk_type_size(type_ptr, i); size = thunk_type_size(type_ptr, i);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册