Bugfixes for HVF and Windows builds.

-----BEGIN PGP SIGNATURE-----
 
 iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAl+03H0UHHBib256aW5p
 QHJlZGhhdC5jb20ACgkQv/vSX3jHroNc3Af/S1z8GW2K7jAwXKUNLmJO4sX3uhan
 hps/VDEYV2qHANztrmXTx4wnsVj+hcHRK0ytGQd+FZFy+MefsHrjv8/hbCae7xji
 7Pb07W4yI8FV7OZDW6+tU0gGbvlh9rR4gy4so6NFyZy8QLpc1MHjqPZvRhpzWZxB
 sAquqJvPno4JYuWCmiW34ldMRa72MNaSbkpndLVDikcMWkvLx62HqLy0kiHrnUTf
 mohRD6+YGQViL7/3ms8bJNP6ddslc9pyzFUakE5XM4/f4hwtnJ5RauGnL8vouAUi
 iaCkg5mF+6uJdgwWPXUefVLsr7xEo+w2MR4+leS4TAJ7Arc11qujMw2pMQ==
 =g7br
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/bonzini-gitlab/tags/for-upstream' into staging

Bugfixes for HVF and Windows builds.

# gpg: Signature made Wed 18 Nov 2020 08:34:05 GMT
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* remotes/bonzini-gitlab/tags/for-upstream:
  buildsys: Help git-diff adding .gitattributes config file
  hvf: Fix segment selector format
  hvf: Gate RDTSCP on CPU_BASED2_RDTSCP, not just CPU_BASED_TSC_OFFSET
  meson: Fixes curses detection on msys2
  meson: Fix build with --disable-guest-agent-msi
  docs: Fix some typos (found by codespell)
  meson: Fix argument for makensis (build regression)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2020-11-18 11:13:14 +00:00
commit 269ff671c5
13 changed files with 50 additions and 37 deletions

2
.gitattributes vendored Normal file
View file

@ -0,0 +1,2 @@
*.c.inc diff=c
*.h.inc diff=c

View file

@ -19,7 +19,7 @@ interface to implement because such device can be easily connected
to systems with different CPU architectures (x86, PowerPC, Arm, etc.).
In 2020, CTU CAN FD controller model has been added as part
of the bachelor theses of Jan Charvat. This controller is complete
of the bachelor thesis of Jan Charvat. This controller is complete
open-source/design/hardware solution. The core designer
of the project is Ondrej Ille, the financial support has been
provided by CTU, and more companies including Volkswagen subsidiaries.
@ -31,7 +31,7 @@ testing lead to goal change to provide environment which provides complete
emulated environment for testing and RTEMS GSoC slot has been donated
to work on CAN hardware emulation on QEMU.
Examples how to use CAN emulation for SJA1000 based borads
Examples how to use CAN emulation for SJA1000 based boards
==========================================================
When QEMU with CAN PCI support is compiled then one of the next
@ -106,8 +106,8 @@ This open-source core provides CAN FD support. CAN FD drames are
delivered even to the host systems when SocketCAN interface is found
CAN FD capable.
The PCIe borad emulation is provided for now (the device identifier is
ctucan_pci). The defauld build defines two CTU CAN FD cores
The PCIe board emulation is provided for now (the device identifier is
ctucan_pci). The default build defines two CTU CAN FD cores
on the board.
Example how to connect the canbus0-bus (virtual wire) to the host

View file

@ -530,7 +530,7 @@ descriptor table (split virtqueue) or descriptor ring (packed
virtqueue). However, it can't work when we process descriptors
out-of-order because some entries which store the information of
inflight descriptors in available ring (split virtqueue) or descriptor
ring (packed virtqueue) might be overrided by new entries. To solve
ring (packed virtqueue) might be overridden by new entries. To solve
this problem, slave need to allocate an extra buffer to store this
information of inflight descriptors and share it with master for
persistent. ``VHOST_USER_GET_INFLIGHT_FD`` and

View file

@ -328,7 +328,7 @@ between the snapshots. Each of the passes include the following steps:
1. loading the snapshot
2. replaying to examine the breakpoints
3. if breakpoint or watchpoint was met
- loading the snaphot again
- loading the snapshot again
- replaying to the required breakpoint
4. else
- proceeding to the p.1 with the earlier snapshot

View file

@ -198,7 +198,7 @@ This is how it is being done:
* user distance 121 and beyond will be interpreted as 160
* user distance 10 stays 10
The reasoning behind this aproximation is to avoid any round up to the local
The reasoning behind this approximation is to avoid any round up to the local
distance (10), keeping it exclusive to the 4th NUMA level (which is still
exclusive to the node_id). All other ranges were chosen under the developer
discretion of what would be (somewhat) sensible considering the user input.

View file

@ -473,7 +473,7 @@ default configuration.
The CPU model runnability guarantee won't apply anymore to
existing CPU models. Management software that needs runnability
guarantees must resolve the CPU model aliases using te
guarantees must resolve the CPU model aliases using the
``alias-of`` field returned by the ``query-cpu-definitions`` QMP
command.
@ -660,7 +660,7 @@ Splitting RAM by default between NUMA nodes had the same issues as ``mem``
parameter with the difference that the role of the user plays QEMU using
implicit generic or board specific splitting rule.
Use ``memdev`` with *memory-backend-ram* backend or ``mem`` (if
it's supported by used machine type) to define mapping explictly instead.
it's supported by used machine type) to define mapping explicitly instead.
Users of existing VMs, wishing to preserve the same RAM distribution, should
configure it explicitly using ``-numa node,memdev`` options. Current RAM
distribution can be retrieved using HMP command ``info numa`` and if separate

View file

@ -174,7 +174,7 @@ Using ':' as the separator a rule is of the form:
- 'bad' - If a client tries to use a name matching 'key' it's
denied using EPERM; when the server passes an attribute
name matching 'prepend' it's hidden. In many ways it's use is very like
'ok' as either an explict terminator or for special handling of certain
'ok' as either an explicit terminator or for special handling of certain
patterns.
**key** is a string tested as a prefix on an attribute name originating

View file

@ -535,7 +535,7 @@ void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int nr)
}
/*
* Assume we have no GMS memory, but allow it to be overrided by device
* Assume we have no GMS memory, but allow it to be overridden by device
* option (experimental). The spec doesn't actually allow zero GMS when
* when IVD (IGD VGA Disable) is clear, but the claim is that it's unused,
* so let's not waste VM memory for it.

View file

@ -490,10 +490,15 @@ if have_system and not get_option('curses').disabled()
return 0;
}'''
curses = dependency((targetos == 'windows' ? 'ncurses' : 'ncursesw'),
required: false,
method: 'pkg-config',
static: enable_static)
curses_dep_list = targetos == 'windows' ? ['ncurses', 'ncursesw'] : ['ncursesw']
foreach curses_dep : curses_dep_list
if not curses.found()
curses = dependency(curses_dep,
required: false,
method: 'pkg-config',
static: enable_static)
endif
endforeach
msg = get_option('curses').enabled() ? 'curses library not found' : ''
if curses.found()
if cc.links(curses_test, dependencies: [curses])

View file

@ -61,23 +61,25 @@ if targetos == 'windows'
if 'CONFIG_QGA_VSS' in config_host and 'QEMU_GA_MSI_WITH_VSS' in config_host
deps += qga_vss
endif
qga_msi = custom_target('QGA MSI',
input: files('installer/qemu-ga.wxs'),
output: 'qemu-ga-@0@.msi'.format(config_host['ARCH']),
depends: deps,
command: [
find_program('env'),
'QEMU_GA_VERSION=' + config_host['QEMU_GA_VERSION'],
'QEMU_GA_MANUFACTURER=' + config_host['QEMU_GA_MANUFACTURER'],
'QEMU_GA_DISTRO=' + config_host['QEMU_GA_DISTRO'],
'BUILD_DIR=' + meson.build_root(),
wixl, '-o', '@OUTPUT0@', '@INPUT0@',
config_host['QEMU_GA_MSI_ARCH'].split(),
config_host['QEMU_GA_MSI_WITH_VSS'].split(),
config_host['QEMU_GA_MSI_MINGW_DLL_PATH'].split(),
])
all_qga += [qga_msi]
alias_target('msi', qga_msi)
if 'CONFIG_QGA_MSI' in config_host
qga_msi = custom_target('QGA MSI',
input: files('installer/qemu-ga.wxs'),
output: 'qemu-ga-@0@.msi'.format(config_host['ARCH']),
depends: deps,
command: [
find_program('env'),
'QEMU_GA_VERSION=' + config_host['QEMU_GA_VERSION'],
'QEMU_GA_MANUFACTURER=' + config_host['QEMU_GA_MANUFACTURER'],
'QEMU_GA_DISTRO=' + config_host['QEMU_GA_DISTRO'],
'BUILD_DIR=' + meson.build_root(),
wixl, '-o', '@OUTPUT0@', '@INPUT0@',
config_host['QEMU_GA_MSI_ARCH'].split(),
config_host['QEMU_GA_MSI_WITH_VSS'].split(),
config_host['QEMU_GA_MSI_MINGW_DLL_PATH'].split(),
])
all_qga += [qga_msi]
alias_target('msi', qga_msi)
endif
endif
else
install_subdir('run', install_dir: get_option('localstatedir'))

View file

@ -65,7 +65,7 @@ def main():
dlldir = "w64"
makensis += ["-DW64"]
if os.path.exists(os.path.join(args.srcdir, "dll")):
makensis += "-DDLLDIR={0}/dll/{1}".format(args.srcdir, dlldir)
makensis += ["-DDLLDIR={0}/dll/{1}".format(args.srcdir, dlldir)]
makensis += ["-DOUTFILE=" + args.outfile] + args.nsisargs
subprocess.run(makensis)

View file

@ -214,16 +214,16 @@ static inline uint32_t x86_call_gate_offset(x86_call_gate *gate)
return (uint32_t)((gate->offset1 << 16) | gate->offset0);
}
#define LDT_SEL 0
#define GDT_SEL 1
#define GDT_SEL 0
#define LDT_SEL 1
typedef struct x68_segment_selector {
union {
uint16_t sel;
struct {
uint16_t rpl:3;
uint16_t rpl:2;
uint16_t ti:1;
uint16_t index:12;
uint16_t index:13;
};
};
} __attribute__ ((__packed__)) x68_segment_selector;

View file

@ -122,6 +122,10 @@ uint32_t hvf_get_supported_cpuid(uint32_t func, uint32_t idx,
CPUID_PAT | CPUID_PSE36 | CPUID_EXT2_MMXEXT | CPUID_MMX |
CPUID_FXSR | CPUID_EXT2_FXSR | CPUID_EXT2_PDPE1GB | CPUID_EXT2_3DNOWEXT |
CPUID_EXT2_3DNOW | CPUID_EXT2_LM | CPUID_EXT2_RDTSCP | CPUID_EXT2_NX;
hv_vmx_read_capability(HV_VMX_CAP_PROCBASED2, &cap);
if (!(cap & CPU_BASED2_RDTSCP)) {
edx &= ~CPUID_EXT2_RDTSCP;
}
hv_vmx_read_capability(HV_VMX_CAP_PROCBASED, &cap);
if (!(cap & CPU_BASED_TSC_OFFSET)) {
edx &= ~CPUID_EXT2_RDTSCP;