]> xenbits.xensource.com Git - mini-os.git/log
mini-os.git
2 years agomini-os: apply coding style to consfront.c
Juergen Gross [Mon, 20 Jun 2022 07:38:17 +0000 (09:38 +0200)]
mini-os: apply coding style to consfront.c

Make consfront.c coding style compliant.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2 years agomini-os: rename console/xenbus.c to consfront.c
Juergen Gross [Mon, 20 Jun 2022 07:38:16 +0000 (09:38 +0200)]
mini-os: rename console/xenbus.c to consfront.c

Move console/xenbus.c into the main directory and rename it to
consfront.c.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2 years agomini-os: eliminate console/console.h
Juergen Gross [Mon, 20 Jun 2022 07:38:15 +0000 (09:38 +0200)]
mini-os: eliminate console/console.h

console/console.h contains only a single prototype. Move that to
include/console.h and remove console/console.h.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2 years agomini-os: apply coding style to xenbus.c
Juergen Gross [Mon, 20 Jun 2022 07:38:14 +0000 (09:38 +0200)]
mini-os: apply coding style to xenbus.c

Make xenbus.c coding style compliant.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2 years agomini-os: drop xenbus directory
Juergen Gross [Mon, 20 Jun 2022 07:38:13 +0000 (09:38 +0200)]
mini-os: drop xenbus directory

The xenbus directory contains only a single source. Move this source
up and remove the xenbus directory.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agofix wrong function declaration
Juergen Gross [Wed, 19 Jan 2022 13:06:00 +0000 (14:06 +0100)]
fix wrong function declaration

Coverity spotted a wrong function declaration, fix it.

Coverity-Id: 1497423
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
3 years agomake files array private to sys.c
Juergen Gross [Sun, 16 Jan 2022 08:33:28 +0000 (09:33 +0100)]
make files array private to sys.c

There is no user of the files[] array outside of lib/sys.c left, so
it can be made static.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoadd struct file_ops for FTYPE_FILE
Juergen Gross [Sun, 16 Jan 2022 08:33:27 +0000 (09:33 +0100)]
add struct file_ops for FTYPE_FILE

FTYPE_FILE is the last relevant file type without a struct file_ops.
Add it.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoadd struct file_ops for file type socket
Juergen Gross [Sun, 16 Jan 2022 08:33:26 +0000 (09:33 +0100)]
add struct file_ops for file type socket

Even with some special handling needed in select_poll(), add a struct
file_ops for FTYPE_SOCKET. Due to the need of the special handling it
isn't possible to use a dynamically allocated file type.

Most functions calling the file_ops methods can be simplified a lot now
that no file type specific handling is left. Same applies to the file
type name printing in debug/verbose mode.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agouse file_ops and get_file_from_fd() for console
Juergen Gross [Sun, 16 Jan 2022 08:33:25 +0000 (09:33 +0100)]
use file_ops and get_file_from_fd() for console

Add struct file_ops for the console related file types (FTYPE_CONSOLE
and savefile). FTYPE_CONSOLE remains statically defined, as it is used
to statically init stdin, stdout and stderr.

Instead of directly accessing the files[] array use get_file_from_fd().

With CONSOLE now handled via file_ops the bogus file descriptor case in
select_poll() now needs to be handled more explicit instead of dropping
into console handling, assuming that this case was basically meant to
cover SAVEFILE.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agouse alloc_file_type() and get_file_from_fd() in fbfront
Juergen Gross [Sun, 16 Jan 2022 08:33:24 +0000 (09:33 +0100)]
use alloc_file_type() and get_file_from_fd() in fbfront

Allocate file types dynamically via alloc_file_type().

Instead of directly accessing the files[] array use get_file_from_fd().

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agouse alloc_file_type() and get_file_from_fd() in netfront
Juergen Gross [Sun, 16 Jan 2022 08:33:23 +0000 (09:33 +0100)]
use alloc_file_type() and get_file_from_fd() in netfront

Allocate the file type dynamically via alloc_file_type().

Instead of directly accessing the files[] array use get_file_from_fd().

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agouse alloc_file_type() and get_file_from_fd() in blkfront
Juergen Gross [Sun, 16 Jan 2022 08:33:22 +0000 (09:33 +0100)]
use alloc_file_type() and get_file_from_fd() in blkfront

Allocate the file type dynamically via alloc_file_type().

Instead of directly accessing the files[] array use get_file_from_fd().

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agouse alloc_file_type() and get_file_from_fd() in tpmfront
Juergen Gross [Sun, 16 Jan 2022 08:33:21 +0000 (09:33 +0100)]
use alloc_file_type() and get_file_from_fd() in tpmfront

Allocate a file type dynamically via alloc_file_type().

Instead of directly accessing the files[] array use get_file_from_fd().

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agouse alloc_file_type() and get_file_from_fd() in tpm_tis
Juergen Gross [Sun, 16 Jan 2022 08:33:20 +0000 (09:33 +0100)]
use alloc_file_type() and get_file_from_fd() in tpm_tis

Allocate a file type dynamically via alloc_file_type().

Instead of directly accessing the files[] array use get_file_from_fd().

Make some now local functions static and modify their prototypes to
match the file_ops requirements.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agouse alloc_file_type() and get_file_from_fd() in xs
Juergen Gross [Sun, 16 Jan 2022 08:33:19 +0000 (09:33 +0100)]
use alloc_file_type() and get_file_from_fd() in xs

Allocate the needed file type via alloc_file_type().

Instead of directly accessing the files[] array use get_file_from_fd().

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoremove gnttab specific member from struct file
Juergen Gross [Sun, 16 Jan 2022 08:33:18 +0000 (09:33 +0100)]
remove gnttab specific member from struct file

The gnttab specific union member in struct file is no longer
needed, so remove it.

The gnttab file type and its associated handling can be removed, too,
as libxengnttab is now supplying a struct file_ops via a call of
alloc_file_type().

This removes all contents of CONFIG_LIBXENGNTTAB guarded sections, so
this config option can be removed.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoremove event channel specific struct file definitions
Juergen Gross [Sun, 16 Jan 2022 08:33:17 +0000 (09:33 +0100)]
remove event channel specific struct file definitions

The event channel specific union member in struct file is no longer
needed, so remove it together with the associated structure
definitions.

The event channel file type and its associated handling can be removed,
too, as libxenevtchn is now supplying a struct file_ops via a call of
alloc_file_type().

This removes all contents of CONFIG_LIBXENEVTCHN guarded sections, so
this config option can be removed.

Add an extern declaration for event_queue as it is used by
libxenevtchn.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoadd CONFIG_LIBXS item
Juergen Gross [Sun, 16 Jan 2022 06:45:27 +0000 (07:45 +0100)]
add CONFIG_LIBXS item

Mini-OS contains a stripped down version of libxenstore in lib/xs.c.
Today it is being built always if CONFIG_XENBUS is set and libc
support is enabled.

In order to allow a Mini-OS specific build of libxenstore to be used
instead add a new CONFIG_LIBXS item which per default will have the
same setting as CONFIG_XENBUS. A user wanting to replace lib/xs.c
with libxenstore would just need to set CONFIG_XENBUS=y and
CONFIG_LIBXS=n.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agouse function vectors instead of switch for file operations
Juergen Gross [Sun, 16 Jan 2022 06:45:26 +0000 (07:45 +0100)]
use function vectors instead of switch for file operations

Introduce file type specific function vectors for all the needed file
operations which are file type specific in order to prepare replacing
the large switch statements in each generic file function.

Add a function to allocate a new file type dynamically in order to
prepare removing direct dependencies to external components in the
future. For this reason switch the file type from an enum to an
unsigned int. Prepare removal of some statically defines file types
by putting them at the end of the defined list.

Change the debug output for the file type from a single character to
a string in order to support a future removal of the file_types[]
array.

Provide some functions useful for file_ops in future patches.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoremove file type FTYPE_XC
Juergen Gross [Sun, 16 Jan 2022 06:45:25 +0000 (07:45 +0100)]
remove file type FTYPE_XC

The only reason for the file type FTYPE_XC has been gone long time
ago: it was needed for xc_map_foreign_bulk(), which has been switched
to use libxenforeignmemory and doesn't need this special file any
more.

So remove everything related to FTYPE_XC.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoreset file type in close() in one place only
Juergen Gross [Sun, 16 Jan 2022 06:45:24 +0000 (07:45 +0100)]
reset file type in close() in one place only

Today the file type in struct file is set to FTYPE_NONE for each
file type individually. Do that at the end of close() handling for
all types.

While at it wipe the complete struct file, too, in order to avoid
old data creeping into a new allocated struct file.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agointroduce get_file_from_fd()
Juergen Gross [Sun, 16 Jan 2022 06:45:23 +0000 (07:45 +0100)]
introduce get_file_from_fd()

Exporting the files[] array especially for components outside the
mini-os source tree is limiting the ability to change any file handling
in mini-os.

Introduce a new function get_file_from_fd() to return the struct file
pointer (or NULL) for a given file descriptor.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoEliminate xenbus union member in struct file
Juergen Gross [Tue, 11 Jan 2022 14:58:13 +0000 (15:58 +0100)]
Eliminate xenbus union member in struct file

Replace the xenbus specific union member in struct file with the
common dev pointer.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoEliminate tpmtis union member in struct file
Juergen Gross [Tue, 11 Jan 2022 14:58:12 +0000 (15:58 +0100)]
Eliminate tpmtis union member in struct file

Replace the tpmtis specific union member in struct file with the
common dev pointer.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoEliminate tpmfront union member in struct file
Juergen Gross [Tue, 11 Jan 2022 14:58:11 +0000 (15:58 +0100)]
Eliminate tpmfront union member in struct file

Replace the tpmfront specific union member in struct file with the
common dev pointer.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoMove tpm respgot member of struct file to device specific data
Juergen Gross [Tue, 11 Jan 2022 14:58:10 +0000 (15:58 +0100)]
Move tpm respgot member of struct file to device specific data

Tpmfront has a "respgot" flag in struct file, which can be moved to the
device specific data. While at it make it a bool.

The respgot flag of the tpm_tis member of struct file can be removed,
as it is never read.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoEliminate netfront union member in struct file
Juergen Gross [Tue, 11 Jan 2022 14:58:09 +0000 (15:58 +0100)]
Eliminate netfront union member in struct file

Replace the netfront specific union member in struct file with the
common dev pointer.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoEliminate kbdfront union member in struct file
Juergen Gross [Tue, 11 Jan 2022 14:58:08 +0000 (15:58 +0100)]
Eliminate kbdfront union member in struct file

Replace the kbdfront specific union member in struct file with the
common dev pointer.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoEliminate fbfront union member in struct file
Juergen Gross [Tue, 11 Jan 2022 14:58:07 +0000 (15:58 +0100)]
Eliminate fbfront union member in struct file

Replace the fbfront specific union member in struct file with the
common dev pointer.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoEliminate consfront union member in struct file
Juergen Gross [Tue, 11 Jan 2022 14:58:06 +0000 (15:58 +0100)]
Eliminate consfront union member in struct file

Replace the consfront specific union member in struct file with the
common dev pointer.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoEliminate blkfront union member in struct file
Juergen Gross [Tue, 11 Jan 2022 14:58:05 +0000 (15:58 +0100)]
Eliminate blkfront union member in struct file

Replace the blkfront specific union member in struct file with the
common dev pointer.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoIntroduce a common dev pointer in struct file
Juergen Gross [Tue, 11 Jan 2022 14:58:04 +0000 (15:58 +0100)]
Introduce a common dev pointer in struct file

There are many dev pointers in a union in struct file. Prepare to
switch to a single one by introducing a new common one.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoReplace multiple fd elements in struct file by common one
Juergen Gross [Tue, 11 Jan 2022 14:58:03 +0000 (15:58 +0100)]
Replace multiple fd elements in struct file by common one

The type specific union in struct files contains two instances of
"int fd". Replace them by a common one.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoMake offset a common struct file member for all types
Juergen Gross [Tue, 11 Jan 2022 14:58:02 +0000 (15:58 +0100)]
Make offset a common struct file member for all types

Currently 4 file types have an offset member in their private struct
file part. Make offset a common struct member shared by all file types.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoMake file.read bool and move it ahead of device specific part
Juergen Gross [Tue, 11 Jan 2022 14:58:01 +0000 (15:58 +0100)]
Make file.read bool and move it ahead of device specific part

The read member of struct file should be bool.

In order to have the device specific part at the end of the structure
move "read" ahead of that.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoSplit struct file definition from its usage
Juergen Gross [Tue, 11 Jan 2022 14:58:00 +0000 (15:58 +0100)]
Split struct file definition from its usage

Make the struct file definition standalone and use it for the
declaration of the files array.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: modify grant mappings to work in PVH mode
Juergen Gross [Tue, 21 Dec 2021 08:46:36 +0000 (09:46 +0100)]
mini-os: modify grant mappings to work in PVH mode

For being able to use the grant mapping interface in PVH mode some
changes are required, as the guest needs to specify a physical address
in the hypercall interface.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: prepare grantmap entry interface for use by PVH mode
Juergen Gross [Tue, 21 Dec 2021 08:46:35 +0000 (09:46 +0100)]
mini-os: prepare grantmap entry interface for use by PVH mode

Instead of passing the pointer of a grantmap entry to the
_gntmap_[un]map_grant_ref() sub-functions use the map pointer and the
entry index instead. This will be needed for PVH mode usage.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: add proper pvh grant table handling
Juergen Gross [Tue, 21 Dec 2021 08:46:34 +0000 (09:46 +0100)]
mini-os: add proper pvh grant table handling

Grant table initialization for PVH requires some additional actions
compared to PV mode. Add those.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: move x86 specific gnttab coding into arch/x86/gnttab.c
Juergen Gross [Tue, 21 Dec 2021 08:46:33 +0000 (09:46 +0100)]
mini-os: move x86 specific gnttab coding into arch/x86/gnttab.c

Having grant table code in arch/x86/mm.c seems wrong. Move it to the
new file arch/x86/gnttab.c, especially as the amount of code is
expected to grow further.

While doing that replace  type casts to pte_t with the more appropriate
__pte() macro.

No functional change.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: add memory map service functions
Juergen Gross [Tue, 21 Dec 2021 08:46:32 +0000 (09:46 +0100)]
mini-os: add memory map service functions

Add two functions for adding reserved areas to the memory map and
for removing them again.

Those will be needed for proper grant table/mapping support in PVH
mode.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: don't repeat definition available via header file
Juergen Gross [Tue, 21 Dec 2021 08:46:31 +0000 (09:46 +0100)]
mini-os: don't repeat definition available via header file

arch/x86/setup.c is repeating the definition of __pte() instead using
the appropriate header. Fix that.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: respect memory map when ballooning up
Juergen Gross [Tue, 21 Dec 2021 08:46:30 +0000 (09:46 +0100)]
mini-os: respect memory map when ballooning up

Today Mini-OS won't look at the memory map when ballooning up. This can
result in problems for PVH domains with more than 4 GB of RAM, as
ballooning will happily run into the ACPI area.

Fix that by adding only pages being marked as RAM in the memory map and
by distinguishing between the current number of RAM pages and the first
unallocated page.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: don't assume contiguous RAM when initializing in PVH mode
Juergen Gross [Tue, 21 Dec 2021 08:46:29 +0000 (09:46 +0100)]
mini-os: don't assume contiguous RAM when initializing in PVH mode

Sizing the available memory should respect memory holes, so look at
the memory map when setting the boundary for the memory allocator.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: sort and sanitize e820 memory map
Juergen Gross [Tue, 21 Dec 2021 08:46:28 +0000 (09:46 +0100)]
mini-os: sort and sanitize e820 memory map

Do some processing of the E820 memory map obtained from the hypervisor:

- align the entries to page boundaries
- sort the entries by their start address
- merge adjacent entries of same type

This is relevant for PVH mode only.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: split e820 map handling into new source file
Juergen Gross [Tue, 21 Dec 2021 08:46:27 +0000 (09:46 +0100)]
mini-os: split e820 map handling into new source file

Introduce e820.c containing all the E820 memory map handling.

No functional change.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agoxenbus: support large messages
Juergen Gross [Mon, 4 Oct 2021 09:40:00 +0000 (11:40 +0200)]
xenbus: support large messages

Today the implementation of the xenbus protocol in Mini-OS will only
allow to transfer the complete message to or from the ring page buffer.
This is limiting the maximum message size to lower values as the xenbus
protocol normally would allow.

Change that by allowing to transfer the xenbus message in chunks as
soon as they are available.

Avoid crashing Mini-OS in case of illegal data read from the ring
buffer.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: add config options for xen libraries
Juergen Gross [Mon, 4 Oct 2021 14:19:24 +0000 (16:19 +0200)]
mini-os: add config options for xen libraries

Today close hooks into libxenctrl, libxenevtchn and libxengnttab are
under the CONFIG_XC umbrella. In order to support Mini-OS builds using
stable Xen libraries only, add CONFIG_LIBXENCTRL, CONFIG_LIBXENEVTCHN
and CONFIG_LIBXENGNTTAB config options.

In case CONFIG_XC was specified in the Mini-OS config explicitly, set
the three new variables to the specified value.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: fix testbuilds regarding CONFIG_XC
Juergen Gross [Mon, 4 Oct 2021 14:19:23 +0000 (16:19 +0200)]
mini-os: fix testbuilds regarding CONFIG_XC

CONFIG_GC is requiring external support, so disable it in testbuilds.

The only reason this is working right now is its usage being inside
a HAVE_LIBC section.

Make that more obvious by making the default setting of CONFIG_XC
depending on libc being available.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agognttab: drop GNTMAP_can_fail xen-4.16.0-rc4 xen-RELEASE-4.16.0 xen-RELEASE-4.16.1 xen-RELEASE-4.16.2 xen-RELEASE-4.16.3 xen-RELEASE-4.16.4
Jan Beulich [Thu, 26 Aug 2021 10:20:26 +0000 (12:20 +0200)]
gnttab: drop GNTMAP_can_fail

There's neither documentation of what this flag is supposed to mean, nor
any implementation in the hypervisor.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
3 years agomini-os: netfront: fix initialization without ip address in xenstore
Juergen Gross [Thu, 19 Aug 2021 05:30:56 +0000 (07:30 +0200)]
mini-os: netfront: fix initialization without ip address in xenstore

Commit 4821876fcd2ff ("mini-os: netfront: fix suspend/resume handling")
introduced a NULL pointer dereference in the initialization of netfront
in the case of no IP address being set in Xenstore.

Fix that by testing this condition. At the same time fix a long
standing bug for the same condition if someone used init_netfront()
with a non-NULL ip parameter.

Fixes: 4821876fcd2ff ("mini-os: netfront: fix suspend/resume handling")
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: move test functions under CONFIG_TEST
Juergen Gross [Tue, 17 Aug 2021 09:54:59 +0000 (11:54 +0200)]
mini-os: move test functions under CONFIG_TEST

There is no need to have the xenbus test support functions always
included in Mini-OS. Move them inside #ifdef CONFIG_TEST.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
3 years agomini-os: make config handling more generic
Juergen Gross [Tue, 17 Aug 2021 09:54:58 +0000 (11:54 +0200)]
mini-os: make config handling more generic

When adding a new CONFIG_ variable this needs to be done in multiple
places. Change the handling to be more generic.

This at once fixes a bug with CONFIG_XC which was not defined for the
C preprocessor (it seems that this never resulted in any real issues,
though).

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: netfront: Handle init failure when no vifs are provided
Costin Lupu [Tue, 15 Dec 2020 16:50:12 +0000 (16:50 +0000)]
mini-os: netfront: Handle init failure when no vifs are provided

These changes deal with the case when no vifs are created. This can happen when
no vif is provided in the config file for mini-os images with netfront support.

Signed-off-by: Costin Lupu <costin.lupu@cs.pub.ro>
Reviewed-by: Samuel Thibault <samuel.thibault@@ens-lyon.org>
4 years agomini-os: netfront: fix suspend/resume handling
Juergen Gross [Tue, 22 Sep 2020 10:58:26 +0000 (12:58 +0200)]
mini-os: netfront: fix suspend/resume handling

Suspend/resume handling of netfront is completely broken from the
beginning. Commit d225f4012d69a1 ("Save/Restore Support: Add
suspend/restore support for netfront") introduced a new structure
netfront_dev_list referencing the real struct netfront_dev elements.
This list is used to setup the devices when resuming again.

Unfortunately the netfront_dev elements are released during suspend,
so at resume time those references will be stale.

Fix this whole mess by dropping struct netfront_dev_list again and
link the netfront_dev elements directly into a list. When suspending
don't free those elements.

The ip-address, netmask and gateway strings can just be released when
suspending and reread from xenstore at resume time.

Fixes: d225f4012d69a1 ("Save/Restore Support: Add suspend/restore support for netfront")
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: netfront: retrieve netmask and gateway via extra function
Juergen Gross [Tue, 22 Sep 2020 10:58:25 +0000 (12:58 +0200)]
mini-os: netfront: retrieve netmask and gateway via extra function

Commit 1b8ed31f4ce40 ("mini-os: netfront: Read netmask and gateway from
Xenstore") modified init_netfront() to take two additional parameters.
This broke the Xen build as init_netfront() is used in grub stubdom,
too.

So instead of tightly coupling Mini-OS and Xen build via this interface
modification undo this change of init_netfront() and add two other
functions for retrieving the netmask and gateway for a network device.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: Fix outdated init_netfront() calls
Costin Lupu [Thu, 27 Aug 2020 16:45:36 +0000 (19:45 +0300)]
mini-os: Fix outdated init_netfront() calls

Commit 1b8ed31f changed the init_netfront() declaration. This patch fixes a
couple of calls that were overlooked for that initial commit.

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Costin Lupu <costin.lupu@cs.pub.ro>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: Add suspend stubs for ARM
Costin Lupu [Wed, 19 Aug 2020 16:41:08 +0000 (19:41 +0300)]
mini-os: Add suspend stubs for ARM

This patch introduces the missing suspend-related stubs for ARM. It also
introduces the new arch_suspend() function in order to keep the logic in
kernel_suspend() arch independent.

Signed-off-by: Costin Lupu <costin.lupu@cs.pub.ro>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: Use a single start_info_ptr variable
Costin Lupu [Wed, 19 Aug 2020 15:45:36 +0000 (18:45 +0300)]
mini-os: Use a single start_info_ptr variable

The second definition of the `start_info_ptr` variable was introduced by commit
e05eb0 which was part of a series trying to add suspend/resume support to
mini-os. This patch removes the second definition by reverting some changes of
the mentioned commit and of commit 892b66.

However the logic in shutdown.c is still left in an inconsistent state because
it still doesn't work for ARM. The solution should be part of a future patch.

Signed-off-by: Costin Lupu <costin.lupu@cs.pub.ro>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: netfront: Read netmask and gateway from Xenstore
Costin Lupu [Wed, 19 Aug 2020 12:49:00 +0000 (15:49 +0300)]
mini-os: netfront: Read netmask and gateway from Xenstore

When providing the IP address via the config file, one can also add the
netmask and gateway address, e.g. "ip=192.168.0.2 255.255.255.0
192.168.0.1", which will be further published to Xenstore. This patch adds
support for reading the netmask and gateway values.

Signed-off-by: Costin Lupu <costin.lupu@cs.pub.ro>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: console.c: Rename static variable from buf to __print_buf
Costin Lupu [Tue, 18 Aug 2020 13:44:06 +0000 (16:44 +0300)]
mini-os: console.c: Rename static variable from buf to __print_buf

lwip soure code also has a static variable called 'buf' in ip_frag.c. This can
get confusing when inspecting the binary (e.g. with objdump or something
similar). Therefore this patch renames the 'buf' variable used by print()
function to '__print_buf'.

Signed-off-by: Costin Lupu <costin.lupu@cs.pub.ro>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: correct memory access rights for pvh mode RELEASE-4.15.3 xen-RELEASE-4.15.0 xen-RELEASE-4.15.1 xen-RELEASE-4.15.2 xen-RELEASE-4.15.3 xen-RELEASE-4.15.4
Juergen Gross [Sat, 15 Aug 2020 11:15:57 +0000 (13:15 +0200)]
mini-os: correct memory access rights for pvh mode

When running as a PVH guest the memory access rights are not set
correctly: _PAGE_USER should not be set and CR0.WP should be set.
Especially CR0.WP is important in order to let the allocate on
demand feature work, as it requires a page fault when writing to a
read-only page.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: fix do_map_frames() for pvh
Juergen Gross [Sat, 15 Aug 2020 11:12:57 +0000 (13:12 +0200)]
mini-os: fix do_map_frames() for pvh

In case ov PVH dom_map_frames() is missing to increment the virtual
address. This leads to writing only the first page table entry multiple
times.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agomini-os: don't hard-wire xen internal paths
Juergen Gross [Mon, 13 Jul 2020 08:42:30 +0000 (10:42 +0200)]
mini-os: don't hard-wire xen internal paths

Mini-OS shouldn't use Xen internal paths for building. Import the
needed paths from Xen and fall back to the current values only if
the import was not possible.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
4 years agoconsole: add newline at EOF xen-RELEASE-4.14.0 xen-RELEASE-4.14.1 xen-RELEASE-4.14.2 xen-RELEASE-4.14.3 xen-RELEASE-4.14.4 xen-RELEASE-4.14.5
Jan Beulich [Mon, 18 May 2020 07:09:14 +0000 (09:09 +0200)]
console: add newline at EOF

Some gcc versions get pretty unhappy without.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
5 years agomini-os: Avoid segfaults in tc{g,s}etattr
Jason Andryuk [Mon, 27 Apr 2020 03:40:19 +0000 (23:40 -0400)]
mini-os: Avoid segfaults in tc{g,s}etattr

Commit c96c22f1d94 "mini-os: minimal implementations of some termios
functions" introduced implementations of tcgetattr and tcsetattr.
However, they do not check if files[fildes].cons.dev is non-NULL before
dereferencing.  This is not a problem for FDs allocated through
alloc_fd, but the files array pre-allocates FDs 0-2 for stdio.  Those
entries have a NULL .dev, so tc{g,s}etattr on them segfault.

ioemu-stubdom segfaults when term_init() calls tcgetattr on FD 0.

Restore tcgetattr and tcsetattr behavior when .dev is NULL equivalent to
unsupported_function as it was before c96c22f1d94.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
5 years agomini-os: allow 4096 event channels for 64-bit mini-os
Juergen Gross [Thu, 16 Apr 2020 12:27:00 +0000 (14:27 +0200)]
mini-os: allow 4096 event channels for 64-bit mini-os

Limiting the number of event channels to 1024 is fine for 32-bit
builds, but not for 64-bit ones. This might be a problem when using
Xenstore-stubdom as the number of domains which can be supported is
then limited to a little bit more than 1000.

So raise the number of event channels to 4096 in 64-bit builds.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
5 years agomini-os: provide binary without debug information
Juergen Gross [Thu, 16 Apr 2020 12:27:48 +0000 (14:27 +0200)]
mini-os: provide binary without debug information

Provide a mini-os binary stripped from debug information in order to
have a smaller resulting kernel file. The binary with debug
information is kept with the suffix "-debug".

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
5 years agomini-os: use -m elf_i386 for final linking
Juergen Gross [Thu, 16 Apr 2020 13:17:15 +0000 (15:17 +0200)]
mini-os: use -m elf_i386 for final linking

Using the standard -m elf_x86_64 for 64-bit mini-os results in the
first section (.text) to start only at offset 2MB in the binary file.

Quoting Andrew Cooper on that topic:

  Specifically, 64bit emulation appears to include "align primary
  sections to 2M so your OS can make better use of superpages even when
  mmap()ing", with no way I can spot to override this in the linker
  file.

Using -m elf_i386 avoids that problem without any visible disadvantage.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
5 years agomini-os: fix several memory leaks related to xenbus
Juergen Gross [Thu, 9 Apr 2020 14:12:40 +0000 (16:12 +0200)]
mini-os: fix several memory leaks related to xenbus

There are several instances of calls to xenbus functions which don't
test for an error and in consequence are not freeing the returned
error strings, or which are just not freeing the string after e.g.
printing it.

Fix that by either adding the needed calls of free().

Coverity-ID: 1433632
Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Wei Liu <wl@xen.org>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
5 years agomini-os: fix double free() in xenbus
Juergen Gross [Thu, 9 Apr 2020 14:12:39 +0000 (16:12 +0200)]
mini-os: fix double free() in xenbus

Commit 973ad0c4de1b48 ("Save/Restore Support: Add suspend/restore
support for xenbus") introduced a double free of some memory and leaked
another memory allocation.

Fix those.

Coverity-ID: 1433640
Fixes: 973ad0c4de1b48 ("Save/Restore Support: Add suspend/restore support for xenbus")
Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Wei Liu <wl@xen.org>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
5 years agomini-os: fix double free() in netfront
Juergen Gross [Thu, 9 Apr 2020 14:12:38 +0000 (16:12 +0200)]
mini-os: fix double free() in netfront

Commit d225f4012d69a19 ("Save/Restore Support: Add suspend/restore
support for netfront") introduced a regression in form of freeing a
netfront device structure twice.

Fix that.

Coverity-ID: 1433637
Fixes: d225f4012d69a19 ("Save/Restore Support: Add suspend/restore support for netfront")
Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Wei Liu <wl@xen.org>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Add fini_shutdown call to app exit flow.
Bruno Alvisio [Tue, 27 Mar 2018 15:54:20 +0000 (08:54 -0700)]
Save/Restore Support: Add fini_shutdown call to app exit flow.

Instead of calling kernel_shutdown() in the exit flow, a call to fini_shutdown()
is added to the existing exit flow.

kernel_shutdown() is removed since it is not used in any part of mini-OS.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
7 years agoSave/Restore Support: Move location of CONFIG_XENBUS macro to include appropiate...
Bruno Alvisio [Fri, 23 Mar 2018 17:47:52 +0000 (10:47 -0700)]
Save/Restore Support: Move location of CONFIG_XENBUS macro to include appropiate variables and functions.

init_shutdown and fini_shutdown functions should only be implemented if
CONFIG_XENBUS is defined.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
7 years agoSave/Restore Support: Implement code for arch suspend/resume
Bruno Alvisio [Mon, 11 Dec 2017 16:05:18 +0000 (08:05 -0800)]
Save/Restore Support: Implement code for arch suspend/resume

Before suspending the domain the shared_info_page is unmapped and for PVs the
pagetables should be canonicalized. After resume the shared_info_page should be
mapped again.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Add suspend/restore support for netfront
Bruno Alvisio [Mon, 11 Dec 2017 16:23:15 +0000 (08:23 -0800)]
Save/Restore Support: Add suspend/restore support for netfront

Performed an additional cleanup to make the file more syntactically consistent.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Add suspend/restore support for xenbus
Bruno Alvisio [Mon, 11 Dec 2017 16:21:48 +0000 (08:21 -0800)]
Save/Restore Support: Add suspend/restore support for xenbus

Currently the watch path is not saved in the watch struct when it is registered.
During xenbus resume the path is needed so that the watches can be registered again.
Thus, 'path' field is added to struct watch so that watches can be re-registered
during xenbus resume.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Add suspend/restore support for Grant Tables.
Bruno Alvisio [Mon, 11 Dec 2017 16:12:47 +0000 (08:12 -0800)]
Save/Restore Support: Add suspend/restore support for Grant Tables.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
7 years agoSave/Restore Support: Add support for suspend/restore events.
Bruno Alvisio [Mon, 11 Dec 2017 16:11:09 +0000 (08:11 -0800)]
Save/Restore Support: Add support for suspend/restore events.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Add suspend/restore support for console
Bruno Alvisio [Mon, 11 Dec 2017 16:09:21 +0000 (08:09 -0800)]
Save/Restore Support: Add suspend/restore support for console

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Add suspend/resume support for timers
Bruno Alvisio [Mon, 11 Dec 2017 16:07:29 +0000 (08:07 -0800)]
Save/Restore Support: Add suspend/resume support for timers

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
7 years agoSave/Restore Support: Disable/enable IRQs during suspend/restore
Bruno Alvisio [Mon, 18 Dec 2017 19:29:59 +0000 (11:29 -0800)]
Save/Restore Support: Disable/enable IRQs during suspend/restore

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Add arch_mm_pre|post_suspend
Bruno Alvisio [Tue, 19 Dec 2017 01:17:53 +0000 (17:17 -0800)]
Save/Restore Support: Add arch_mm_pre|post_suspend

For PV guests the pagetables reference the real MFNs rather than PFNs, so when
the guest is resumed into a different area of a hosts memory, these will need to
be rewritten.

PVH guests are auto-translated so no memory operation is needed.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Add unmap_shared_info
Bruno Alvisio [Mon, 11 Dec 2017 15:25:36 +0000 (07:25 -0800)]
Save/Restore Support: Add unmap_shared_info

This function is necessary as part of the pre-suspend operation.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Moved shutdown thread to shutdown.c
Bruno Alvisio [Mon, 11 Dec 2017 15:22:31 +0000 (07:22 -0800)]
Save/Restore Support: Moved shutdown thread to shutdown.c

The shutdown thread present in kernel.c was removed and now the thread in
shutdown.c is created instead.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Add kernel shutdown logic to shutdown.c
Bruno Alvisio [Mon, 11 Dec 2017 15:17:16 +0000 (07:17 -0800)]
Save/Restore Support: Add kernel shutdown logic to shutdown.c

Created shutdown.c for the shutdown thread and all the shutdown related
functions.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
7 years agoSave/Restore Support: Add xenbus_release_wait_for_watch
Bruno Alvisio [Tue, 12 Dec 2017 23:55:34 +0000 (15:55 -0800)]
Save/Restore Support: Add xenbus_release_wait_for_watch

xenbus_release_wait_for_watch generates a fake event to trigger make
xenbus_wait_for_watch return. This is necessary to wake up waiting threads.

release_xenbus_id additionally checks if the number of requests == 0 to wake
up the 'waiting' suspend xenbus thread.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Declare kernel and arch pre/post suspend functions
Bruno Alvisio [Mon, 11 Dec 2017 15:07:08 +0000 (07:07 -0800)]
Save/Restore Support: Declare kernel and arch pre/post suspend functions

For mini-OS to support suspend and restore, the kernel will have to suspend
different modules such as xenbus, console, irq, etc. During save/restore the
kernel and arch pre_suspend and post_suspend functions will be invoked to
suspend/resume each of the modules.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Refactor trap_init() and setup vector callbacks
Bruno Alvisio [Thu, 14 Dec 2017 00:30:10 +0000 (16:30 -0800)]
Save/Restore Support: Refactor trap_init() and setup vector callbacks

Currently the setup of the IDT and the request to set the HVM vector callbacks
are performed both in the trap_init function.

As part of the post-suspend operation, the HVM vector callback needs to be setup
again while the IDT does not. Thus, the trap_init function is split into two
separate functions: trap_init (sets up IDT) and xen_callback_vector (sets the
HVM vector callback). During the post-suspend operations the xen_callback_vector
function will be invoked.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoSave/Restore Support: Refactor HYPERVISOR_suspend hypercall
Bruno Alvisio [Mon, 11 Dec 2017 06:51:07 +0000 (22:51 -0800)]
Save/Restore Support: Refactor HYPERVISOR_suspend hypercall

Directly using the SHUTDOWN_suspend macro as a parameter for the schedop
hypercall causes an error in the Xen hypercall handler. Also for consistency,
the SHUTDOWN_suspend param is wrapped in the sched_shutdown struct.

Signed-off-by: Bruno Alvisio <bruno.alvisio@gmail.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agomini-os: add config item for printing via hypervisor
Juergen Gross [Wed, 22 Nov 2017 07:59:32 +0000 (08:59 +0100)]
mini-os: add config item for printing via hypervisor

Today Mini-OS will print all console output via the hypervisor, too.

Make this behavior configurable instead and default it to "off".

Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agomini-os: add a coding style file
Juergen Gross [Thu, 9 Nov 2017 12:10:12 +0000 (13:10 +0100)]
mini-os: add a coding style file

Since carving out Mini-OS from the Xen repository there hasn't been a
description of the preferred coding style. Copy the Xen CODING_STYLE
file.

Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
7 years agoUpdate Xen header files again xen-4.11.0-rc1.1 xen-4.12.0-rc1 xen-4.13.0-rc1 xen-RELEASE-4.10.0 xen-RELEASE-4.10.1 xen-RELEASE-4.10.2 xen-RELEASE-4.10.3 xen-RELEASE-4.10.4 xen-RELEASE-4.11.0 xen-RELEASE-4.11.1 xen-RELEASE-4.11.2 xen-RELEASE-4.11.3 xen-RELEASE-4.11.4 xen-RELEASE-4.12.0 xen-RELEASE-4.12.1 xen-RELEASE-4.12.2 xen-RELEASE-4.12.3 xen-RELEASE-4.12.4 xen-RELEASE-4.13.0 xen-RELEASE-4.13.1 xen-RELEASE-4.13.2 xen-RELEASE-4.13.3 xen-RELEASE-4.13.4 xen-RELEASE-4.13.5
Wei Liu [Mon, 16 Oct 2017 15:36:41 +0000 (16:36 +0100)]
Update Xen header files again

The most important thing is the update to console.h, which fixes a bug
that requires the consumers to include string.h.

Update all headers nonetheless for other fixes and new content.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoLink against libxentoolcore xen-4.10.0-rc1
Ian Jackson [Tue, 3 Oct 2017 18:45:19 +0000 (19:45 +0100)]
Link against libxentoolcore

Bringing this commit into xen.git needs coordination with the
corresponding change to introduce the new library: this commit needs to
be introduced to xen.git immediately after
   xentoolcore, _restrict_all: Introduce new library and implementation

Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
7 years agoUpdate public headers from Xen
Wei Liu [Wed, 4 Oct 2017 13:43:30 +0000 (14:43 +0100)]
Update public headers from Xen

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agoInclude string.h before console.h
Wei Liu [Wed, 4 Oct 2017 13:51:26 +0000 (14:51 +0100)]
Include string.h before console.h

Starting from Xen commit af8d93564, it is required to include string.h
before console.h.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agolib/math.c: implement __udivmoddi4
Wei Liu [Wed, 9 Aug 2017 12:15:48 +0000 (13:15 +0100)]
lib/math.c: implement __udivmoddi4

Some code compiled by gcc 7 requires this.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
7 years agomini-os: add declaration of cfmakeraw
Simon Waterman [Sun, 25 Jun 2017 22:02:09 +0000 (23:02 +0100)]
mini-os: add declaration of cfmakeraw

Add declaration of cfmakeraw as this is the simplest way of an
application setting a tty into raw mode.

Signed-off-by: Simon Waterman <watermansrdev@gmail.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
7 years agomini-os: minimal implementations of some termios functions
Simon Waterman [Sun, 25 Jun 2017 22:02:08 +0000 (23:02 +0100)]
mini-os: minimal implementations of some termios functions

Add minimal implementation of termios functions so that a console
can be configured in raw mode if an application requires it.

Signed-off-by: Simon Waterman <watermansrdev@gmail.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>