Re: [PATCH 5/5] add setting gs/fsbase

2023-04-24 Thread Luca Dariz
Il 24/04/23 17:19, Sergey Bugaev ha scritto: Resending without the attachment, because apparently the email did not make it into the list archive so maybe it didn't get to you either; and I'm too conscious about email just eating my letters without any notice or indication since that one time. If

[PATCH] fix fs/gs save/restore and USER32

2023-05-18 Thread Luca Dariz
* x86_64/locore.S: fix PUSH_FSGS -> _ISR and always make room for fsgsbase on a 64-bit kernel. --- x86_64/locore.S | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/x86_64/locore.S b/x86_64/locore.S index a782ec8a..d456b06b 100644 --- a/x86_64/locore.S +++ b/x86_64/locore.S

[PATCH 2/3] x86_64: push user's VM_MAX_ADDRESS

2023-05-21 Thread Luca Dariz
* i386/include/mach/i386/vm_param.h: check for both KERNEL and USER32 to differentiate between user/kernel on x86_64, and push the upper limit of user address space to 128 TB. --- i386/include/mach/i386/vm_param.h | 24 1 file changed, 16 insertions(+), 8 deletions(-)

[PATCH 1/3] pmap: dynamically allocate the whole user page tree map

2023-05-21 Thread Luca Dariz
* i386/intel/pmap.c: switch to dynamic allocation of all the page tree map levels for the user-space address range, using a separate kmem cache for each level. This allows to extend the usable memory space on x86_64 to use more than one L3 page for user space. The kernel address map is left

[PATCH 3/3] x86_64: fix descriptor loading for 64-bit addresses

2023-05-21 Thread Luca Dariz
* i386/i386/seg.h: use proper type for segment addresses. This is not impacting any functionality on 64-bit, as segments limits are ignored, but at least we silence a warning. --- i386/i386/seg.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i386/i386/seg.h b/i386/i386/

Re: [PATCH 2/3] x86_64: push user's VM_MAX_ADDRESS

2023-05-21 Thread Luca Dariz
Il 21/05/23 21:17, Samuel Thibault ha scritto: Luca Dariz, le dim. 21 mai 2023 10:57:57 +0200, a ecrit: +#if defined(KERNEL) && defined(USER32) +#define VM_MAX_ADDRESS (0xc000UL) +#else /* defined(KERNEL) && defined(USER32) */ +#define VM_MAX_ADDRESS (0

[PATCH v2] x86_64: push user's VM_MAX_ADDRESS

2023-05-21 Thread Luca Dariz
* i386/include/mach/i386/vm_param.h: check for both KERNEL and USER32 to differentiate between user/kernel on x86_64, and push the upper limit of user address space to 128 TB. --- i386/include/mach/i386/vm_param.h | 24 1 file changed, 16 insertions(+), 8 deletions(-)

[PATCH] x86_64: fix APIC initialization

2023-05-21 Thread Luca Dariz
* i386/i386at/acpi_parse_apic.c: use vm_offset_t instead of uint32_t for vm addresses * x86_64/Makefrag.am: support --enable-apic --- i386/i386at/acpi_parse_apic.c | 8 x86_64/Makefrag.am| 17 ++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a

[PATCH 1/3] pmap: only map lower BIOS memory 1:1 when using Linux drivers

2023-05-26 Thread Luca Dariz
* i386/intel/pmap.c: add the check for LINUX_DEV; we could also check for !__x86_64__, as this config would break ther kernel map by removing the BIOS mem map, needed by the console and keyboard drivers, but hopefully we won't need to enable Linux drivers on x86_64. --- i386/intel/pmap.c |

[PATCH 2/3] x86_64: enable code for managing interrupts

2023-05-26 Thread Luca Dariz
* device/ds_routines.c: enable interrupt registration and acknowledge for x86_64. We can reuse the 32-bit mechanisms. --- device/ds_routines.c | 12 ++-- 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/device/ds_routines.c b/device/ds_routines.c index 1f0bacf4..ea880535 100

[PATCH 3/3] x86_64: add 64-bit registers when dumping thread state

2023-05-26 Thread Luca Dariz
* i386/i386/debug_i386.c: when using a 64-bit userspace we need to use RAX and so on, and we can ignore most segments except FS/GS, but only the base address is useful. --- i386/i386/debug_i386.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/i386/i386/debug_i386.c b/i386/

[PATCH 0/3] 64-bit improvements (rump drivers, debug)

2023-05-26 Thread Luca Dariz
1 56 59 236k 12k Luca Dariz (3): pmap: only map lower BIOS memory 1:1 when using Linux drivers x86_64: enable code for managing interrupts x86_64: add 64-bit registers when dumping thread state device/ds_routines.c | 12 ++-- i386/i386/debug_i386.c | 14

[PATCH 2/3] x86_64: install emergency handler for double fault

2023-06-15 Thread Luca Dariz
* i386/i386/idt.c: add selector for the interrupt-specific stack * i386/i386/ktss.c: configure ist1 * i386/i386/trap.c: add double fault handler, which just prints the state and panics. There is not much else to do in this case but it's useful for troubleshooting * x86_64/idt_inittab.S: allow t

[PATCH 3/3] x86_64: add a critical section on entry and exit from syscall/sysret

2023-06-15 Thread Luca Dariz
When entering a syscall we're still using the user stack, so we can't reliably handle exceptions or interrupts, otherwise a user thread can easily crash the machine with an invalid stack. Instead, disable interrupts and (hopefullly) avoid traps in the fragments where we need to have the user stack

[PATCH 1/3] x86_64: use solid intstack already during bootstrap

2023-06-15 Thread Luca Dariz
* x86_64/boothdr.S: there is no reason to not use it right away --- x86_64/boothdr.S | 5 + 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/x86_64/boothdr.S b/x86_64/boothdr.S index d81f9a78..0ab9bd55 100644 --- a/x86_64/boothdr.S +++ b/x86_64/boothdr.S @@ -158,7 +158,7 @@ switch6

Re: [PATCH 2/3] x86_64: install emergency handler for double fault

2023-06-19 Thread Luca Dariz
Il 17/06/23 23:12, Samuel Thibault ha scritto: Luca Dariz, le jeu. 15 juin 2023 23:49:30 +0200, a ecrit: diff --git a/i386/i386/ktss.c b/i386/i386/ktss.c index 1d880167..52f3722c 100644 --- a/i386/i386/ktss.c +++ b/i386/i386/ktss.c @@ -61,6 +61,7 @@ ktss_fill(struct task_tss *myktss, struct

Porting Mach syscall/ipc to Linux

2016-01-15 Thread Luca Dariz
Hello, has anyone already tried to port or implement the Mach syscalls and ipc to Linux? I am wondering if there are any fundamental limitations due to different architectural decisions and so on, I was thinking about building a module to add such functionalities, eventually emulating the syscall

rump pci drivers backend

2016-07-26 Thread Luca Dariz
Hello I have make a small improvement to the pci-userspace backend for rump drivers, here https://github.com/rumpkernel/pci-userspace/pull/4 I am now able to run virtio ld drivers, any comment or suggestion is very welcome! Cheers Luca

Re: rump pci drivers backend

2016-08-08 Thread Luca dariz
Il 30/07/2016 03:47, Olaf Buddenhagen ha scritto: > On Fri, Jul 29, 2016 at 06:30:09PM +, Luca wrote: > >> I need a way to translate logical addresses to physical, > > Is this for DMA or something along these lines? If so, the interface for > allocating "contiguous memory" that was added for

Re: rump pci drivers backend

2016-09-16 Thread Luca dariz
Il 09/08/2016 00:21, Luca dariz ha scritto: > Il 30/07/2016 03:47, Olaf Buddenhagen ha scritto: >> On Fri, Jul 29, 2016 at 06:30:09PM +, Luca wrote: >> >>> I need a way to translate logical addresses to physical, >> >> Is this for DMA or something along t

Re: rump pci drivers backend

2016-09-16 Thread Luca dariz
Il 17/09/2016 01:12, Luca dariz ha scritto: > Il 09/08/2016 00:21, Luca dariz ha scritto: >> Il 30/07/2016 03:47, Olaf Buddenhagen ha scritto: >>> On Fri, Jul 29, 2016 at 06:30:09PM +, Luca wrote: >>> >>>> I need a way to translate logical addresses

[PATCH] [RFC] Add trivfs_startup_debug() for easier translator development

2017-01-26 Thread luca . dariz
From: Luca Dariz Basically it is an automation of this: http://walfield.org/pub/people/neal/papers/hurd-misc/manual-bootstrap.txt To launch a storeio translator on FILE: $ storeio -d FILE -T TYPE ARG --- libtrivfs/startup.c | 69

Re: Introduction

2018-05-02 Thread Luca Dariz
Il 02/05/2018 00:27, Joseph Edward Hemann ha scritto: > Hello GNU Hurd community Hello Joseph! > Looking through your contribution page I found a project that that > seemed interesting to me, writing driver for virtio for KVM > (https://www.gnu.org/software/hurd/open_issues/virtio.html), but the

Re: Can we use a rump kernel to implement ext4?

2018-05-03 Thread Luca Dariz
Il 02/05/2018 20:17, Joshua Branson ha scritto: > > Slightly related question, I just quickly read the intro text to the > rump kernel on rumpkernel.org. And I read > > "We solve the problem by providing free, reusable, componentized, kernel > quality drivers such as file systems..." > > Could

Re: Enable SMP support

2018-07-03 Thread Luca Dariz
Hello! Il 28/06/2018 20:31, Almudena Garcia ha scritto: > Now the compiler gets the gnumach.o, but It returns another linker error. > I attach logs also. > > > How can I solve this? >From the last lines of the log ... ffs intel_startCPU local_bh_count local_irq_count ... these four functions

Re: Enable SMP support

2018-07-03 Thread Luca Dariz
Il 03/07/2018 17:49, Almudena Garcia ha scritto: > I've just tried to add this functions in Makefile.am, in clib_routines, > as this form > > clib_routines := htonl htons ntohl ntohs    \ > udivdi3 __udivdi3 __udivmoddi4 __umoddi3   \ > __d

[PATCH 1/5] x86_64: fix stack handling on recursive interrupts for USER32

2023-07-29 Thread Luca Dariz
* x86_64/locore.S: ensure the thread state is filled completely even on recursive interrups. The value of the segment selectors is not very important in this case, but we still need to align the stack to the bottom of i386_interrupt_state. --- x86_64/locore.S | 16 +++- 1 file ch

[PATCH 5/5] x86_64: remove unneeded segment selectors handling on full 64 bit

2023-07-29 Thread Luca Dariz
* i386/i386/db_interface.c: don't set unused segment selectors on full 64-bit * i386/i386/db_trace.c: likewise. * i386/i386/i386asm.sym: likewise. * i386/i386/pcb.c:: likewise. * i386/i386/thread.h: remove ES/DS/FS/GS from thread state on !USER32, as they are unused in this configuration. Only

[PATCH 4/5] x86_64: refactor segment register handling

2023-07-29 Thread Luca Dariz
The actual values are not saved together with the rest of the thread state, both because it would be quite espensive (reading MSR, unless rdfsbase instructions are supported, but that's optional) and not really needed. The only way the user has to change its value is with a specific RPC, so we can

[PATCH 2/5] x86_64: disable V86 mode on full 64-bit configuration

2023-07-29 Thread Luca Dariz
* i386/i386/pcb.c: simplify exception stack location and adapt thread gettrs/setters * i386/i386/thread.h: don't include V86 fields on full 64-bit * x86_64/locore.S: don't include checks for V86 mode on full 64-bit --- i386/i386/pcb.c| 35 ++- i386/i386/thread

[PATCH 3/5] x86_64: format pusha/popa macros for readability

2023-07-29 Thread Luca Dariz
--- x86_64/locore.S | 37 +++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/x86_64/locore.S b/x86_64/locore.S index 413d43c4..7127957b 100644 --- a/x86_64/locore.S +++ b/x86_64/locore.S @@ -39,8 +39,41 @@ #include #include -#define pusha pus

[PATCH v2] x86_64: install emergency handler for double fault

2023-07-29 Thread Luca Dariz
* i386/i386/idt.c: add selector for the interrupt-specific stack * i386/i386/ktss.c: configure ist1 to use a dedicated stack * i386/i386/trap.c: add double fault handler, which just prints the state and panics. There is not much else to do in this case but it's useful for troubleshooting * x86_

Re: [PATCH 5/5] x86_64: remove unneeded segment selectors handling on full 64 bit

2023-08-09 Thread Luca Dariz
Il 04/08/23 23:50, Samuel Thibault ha scritto: Luca Dariz, le sam. 29 juil. 2023 19:47:53 +0200, a ecrit: @@ -803,10 +809,7 @@ kern_return_t thread_getstatus( == 0) saved_state->efl &=

[RFC PATCH 1/2] add basic user-space tests with qemu

2023-10-19 Thread Luca Dariz
* tests/Makefrag.am: add rules to build simple user-space test modules, including generating mig stubs. The tests reuse some kernel code (the printf(), mach_atoi(), mem*(), str*() functions) so we can use the freestanding environment and not depend on glibc. * tests/README: add basic info on

[RFC PATCH 2/2] add mach_host tests

2023-10-19 Thread Luca Dariz
--- tests/Makefrag.am | 4 +++- tests/test-mach_host.c | 54 ++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 tests/test-mach_host.c diff --git a/tests/Makefrag.am b/tests/Makefrag.am index c16326e8..cb946bc7 100644 --- a/tests/

[RFC PATCH 0/2] gnumach testing

2023-10-19 Thread Luca Dariz
sting environment is settled I can adapt other tests I currently have. Luca Dariz (2): add basic user-space tests with qemu add mach_host tests tests/Makefrag.am| 127 +++ tests/README | 37 + tests/configfr

Re: [RFC PATCH 1/2] add basic user-space tests with qemu

2023-10-28 Thread Luca Dariz
Hi, Il 22/10/23 17:19, Samuel Thibault ha scritto: Luca Dariz, le jeu. 19 oct. 2023 20:57:46 +0200, a ecrit: * tests/configfrag.ac: add MIGUSER, required for user-space tests as it might be different from the one used to ubild the kernel. Can't we just automatically select the prope

[PATCH 05/14] add mach_port tests

2023-12-28 Thread Luca Dariz
--- tests/test-mach_port.c | 80 ++ 1 file changed, 80 insertions(+) create mode 100644 tests/test-mach_port.c diff --git a/tests/test-mach_port.c b/tests/test-mach_port.c new file mode 100644 index ..4f095047 --- /dev/null +++ b/tests/test-mach_po

[PATCH 01/14] USER32: change default to disabled and make it a general option

2023-12-28 Thread Luca Dariz
* configfrag.ac: add the global option USER32; although it makes sense for 64-bit versions only, it can be used by future 64-bit architectiures and not only x86_64. Also, change the default setting to be disabled; now that we have a working full 64-bit system, it makes sense to consider it

[PATCH 04/14] add gsync tests

2023-12-28 Thread Luca Dariz
--- tests/test-gsync.c | 87 ++ 1 file changed, 87 insertions(+) create mode 100644 tests/test-gsync.c diff --git a/tests/test-gsync.c b/tests/test-gsync.c new file mode 100644 index ..80701606 --- /dev/null +++ b/tests/test-gsync.c @@ -0,0 +1,

[PATCH 08/14] add thread creation helper to tests

2023-12-28 Thread Luca Dariz
--- tests/include/testlib.h | 1 + tests/testlib.c | 53 + 2 files changed, 54 insertions(+) diff --git a/tests/include/testlib.h b/tests/include/testlib.h index 2b7a67c0..52605047 100644 --- a/tests/include/testlib.h +++ b/tests/include/testlib.h

[PATCH 10/14] expose MACH_MSG_USER_ALIGNMENT for manually-built messages

2023-12-28 Thread Luca Dariz
--- include/mach/message.h | 19 ++- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/include/mach/message.h b/include/mach/message.h index 0b8b34d4..9790ef98 100644 --- a/include/mach/message.h +++ b/include/mach/message.h @@ -401,6 +401,16 @@ typedef integer_t mach_

[PATCH 06/14] adjust range when changing memory pageability

2023-12-28 Thread Luca Dariz
* vm/vm_map.c: if the start address is not in the map, try to find the nearest entry instead of failing. This caused the initial vm_wire_all(host, task VM_WIRE_ALL) in glibc startup to fail with KERN_NO_SPACE. --- vm/vm_map.c | 21 - 1 file changed, 16 insertions(+), 5 delet

[PATCH 02/14] add basic user-space tests with qemu

2023-12-28 Thread Luca Dariz
* configure.ac: move test fragment to have USER32 * tests/Makefrag.am: add user tests * tests/README: add basic info on how to run and debug user tests * tests/configfrag.ac: allow the test compiler/flags to be autoconfigured or customized * tests/grub.cfg.single.template: add minimal grub config

[PATCH 07/14] add basic vm tests

2023-12-28 Thread Luca Dariz
--- tests/test-vm.c | 52 + 1 file changed, 52 insertions(+) create mode 100644 tests/test-vm.c diff --git a/tests/test-vm.c b/tests/test-vm.c new file mode 100644 index ..ba52876b --- /dev/null +++ b/tests/test-vm.c @@ -0,0 +1,52 @@ + +#in

[PATCH 09/14] add syscall tests

2023-12-28 Thread Luca Dariz
--- tests/test-syscalls.c | 149 ++ 1 file changed, 149 insertions(+) create mode 100644 tests/test-syscalls.c diff --git a/tests/test-syscalls.c b/tests/test-syscalls.c new file mode 100644 index ..7e4234ac --- /dev/null +++ b/tests/test-syscalls.

[PATCH 03/14] add mach_host tests

2023-12-28 Thread Luca Dariz
--- tests/test-mach_host.c | 54 ++ 1 file changed, 54 insertions(+) create mode 100644 tests/test-mach_host.c diff --git a/tests/test-mach_host.c b/tests/test-mach_host.c new file mode 100644 index ..99fc4aca --- /dev/null +++ b/tests/test-mach_ho

[PATCH 13/14] add basic thread tests

2023-12-28 Thread Luca Dariz
--- tests/test-threads.c | 88 1 file changed, 88 insertions(+) create mode 100644 tests/test-threads.c diff --git a/tests/test-threads.c b/tests/test-threads.c new file mode 100644 index ..659aaf3b --- /dev/null +++ b/tests/test-threads.c @@

[PATCH v2 00/14] add user tests to gnumach

2023-12-28 Thread Luca Dariz
ll be definitely useful in case of new architectures, if supported by qemu. Currently I ran the tests only on GNU/Linux as qemu does not run yet on the Hurd. Luca Dariz (14): USER32: change default to disabled and make it a general option add basic user-space tests with qemu add mach_host tests

[PATCH 12/14] add basic task tests

2023-12-28 Thread Luca Dariz
--- tests/test-task.c | 149 ++ 1 file changed, 149 insertions(+) create mode 100644 tests/test-task.c diff --git a/tests/test-task.c b/tests/test-task.c new file mode 100644 index ..da9289ff --- /dev/null +++ b/tests/test-task.c @@ -0,0 +1,149

[PATCH 11/14] add raw mach_msg tests

2023-12-28 Thread Luca Dariz
--- tests/test-machmsg.c | 390 +++ 1 file changed, 390 insertions(+) create mode 100644 tests/test-machmsg.c diff --git a/tests/test-machmsg.c b/tests/test-machmsg.c new file mode 100644 index ..c262f5f4 --- /dev/null +++ b/tests/test-machmsg.c @@

[PATCH 14/14] add tests to make check

2023-12-28 Thread Luca Dariz
--- tests/user-qemu.mk | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/user-qemu.mk b/tests/user-qemu.mk index 50b04736..669eb77a 100644 --- a/tests/user-qemu.mk +++ b/tests/user-qemu.mk @@ -178,7 +178,15 @@ clean-test-%: USER_TESTS := \ - tests/test-

Re: [PATCH 02/14] add basic user-space tests with qemu

2023-12-29 Thread Luca Dariz
Hi, Il 29/12/23 14:37, Samuel Thibault ha scritto: Hello, Thanks, this looks good! Luca Dariz, le jeu. 28 déc. 2023 20:42:49 +0100, a ecrit: new file mode 100644 index ..4cf25891 --- /dev/null +++ b/tests/README @@ -0,0 +1,37 @@ + +There are some basic tests that can be run qith qemu

Re: [PATCH 02/14] add basic user-space tests with qemu

2023-12-29 Thread Luca Dariz
Il 29/12/23 14:57, Samuel Thibault ha scritto: Luca Dariz, le ven. 29 déc. 2023 14:51:31 +0100, a ecrit: Il 29/12/23 14:37, Samuel Thibault ha scritto: Luca Dariz, le jeu. 28 déc. 2023 20:42:49 +0100, a ecrit: new file mode 100644 index ..4cf25891 --- /dev/null +++ b/tests/README

Re: [PATCH 03/14] add mach_host tests

2023-12-29 Thread Luca Dariz
Il 29/12/23 14:44, Samuel Thibault ha scritto: Luca Dariz, le jeu. 28 déc. 2023 20:42:50 +0100, a ecrit: --- tests/test-mach_host.c | 54 ++ 1 file changed, 54 insertions(+) create mode 100644 tests/test-mach_host.c diff --git a/tests/test

Re: [PATCH 04/14] add gsync tests

2023-12-29 Thread Luca Dariz
Il 29/12/23 14:56, Samuel Thibault ha scritto: Luca Dariz, le jeu. 28 déc. 2023 20:42:51 +0100, a ecrit: +static void single_t2(void *arg) +{ + int err; + msleep(100); + err = gsync_wake(mach_task_self(), (vm_offset_t)&single_shared, 0, 0); + ASSERT_RET(err, "gsync_wake t2&qu

Re: [PATCH 05/14] add mach_port tests

2024-01-06 Thread Luca Dariz
Il 29/12/23 15:01, Samuel Thibault ha scritto: Luca Dariz, le jeu. 28 déc. 2023 20:42:52 +0100, a ecrit: + mach_port_t newname = 123; Why initializing it? the idea was to check that the value it's actually set, I'll fix it by using a valid port name. + err = mach_por

Re: [PATCH 06/14] adjust range when changing memory pageabilityg

2024-01-06 Thread Luca Dariz
Il 29/12/23 15:06, Samuel Thibault ha scritto: Luca Dariz, le jeu. 28 déc. 2023 20:42:53 +0100, a ecrit: * vm/vm_map.c: if the start address is not in the map, try to find the nearest entry instead of failing. This caused the initial vm_wire_all(host, task VM_WIRE_ALL) in glibc startup to

Re: [PATCH 07/14] add basic vm tests

2024-01-06 Thread Luca Dariz
Il 29/12/23 15:09, Samuel Thibault ha scritto: Luca Dariz, le jeu. 28 déc. 2023 20:42:54 +0100, a ecrit: + // this emulates maptime() + struct mapped_time_value *mtime; + mach_port_t device, memobj; + int err = device_open (device_priv(), 0, "time", &device); + ASSERT_RET(err

Re: [PATCH 08/14] add thread creation helper to tests

2024-01-06 Thread Luca Dariz
Il 29/12/23 15:14, Samuel Thibault ha scritto: Luca Dariz, le jeu. 28 déc. 2023 20:42:55 +0100, a ecrit: diff --git a/tests/testlib.c b/tests/testlib.c index 6abe8c4d..e6be46ee 100644 --- a/tests/testlib.c +++ b/tests/testlib.c @@ -95,3 +95,56 @@ void _start() printf("%s: test %s exit

Re: [PATCH 11/14] add raw mach_msg tests

2024-01-06 Thread Luca Dariz
Il 29/12/23 15:20, Samuel Thibault ha scritto: Luca Dariz, le jeu. 28 déc. 2023 20:42:58 +0100, a ecrit: + +#define align_inline(val, n) { val = align(val, n); } Rather name it ALIGN_INLINE, so people don't mistake this for a function (that doesn't have side-effects on its paramet

[PATCH 04/11] add mach_port tests

2024-01-11 Thread Luca Dariz
--- tests/test-mach_port.c | 121 + tests/user-qemu.mk | 3 +- 2 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 tests/test-mach_port.c diff --git a/tests/test-mach_port.c b/tests/test-mach_port.c new file mode 100644 index 000

[PATCH 08/11] add syscall tests

2024-01-11 Thread Luca Dariz
--- tests/test-syscalls.c | 166 ++ tests/user-qemu.mk| 3 +- 2 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 tests/test-syscalls.c diff --git a/tests/test-syscalls.c b/tests/test-syscalls.c new file mode 100644 index ..b

[PATCH 10/11] add basic task tests

2024-01-11 Thread Luca Dariz
--- tests/test-task.c | 171 + tests/user-qemu.mk | 3 +- 2 files changed, 173 insertions(+), 1 deletion(-) create mode 100644 tests/test-task.c diff --git a/tests/test-task.c b/tests/test-task.c new file mode 100644 index ..cbc75e23 --- /de

[PATCH 07/11] add thread creation helper to tests

2024-01-11 Thread Luca Dariz
--- tests/include/testlib.h | 1 + tests/testlib_thread_start.c | 86 tests/user-qemu.mk | 1 + 3 files changed, 88 insertions(+) create mode 100644 tests/testlib_thread_start.c diff --git a/tests/include/testlib.h b/tests/include/testlib.h i

[PATCH 01/11] add basic user-space tests with qemu

2024-01-11 Thread Luca Dariz
* configure.ac: move test fragment to have USER32 * tests/Makefrag.am: add user tests * tests/README: add basic info on how to run and debug user tests * tests/configfrag.ac: allow the test compiler/flags to be autoconfigured or customized * tests/grub.cfg.single.template: add minimal grub config

[PATCH 05/11] adjust range when changing memory pageability

2024-01-11 Thread Luca Dariz
* vm/vm_map.c: use actual limits instead of min/max boundaries to change pageability of the currently mapped memory. This caused the initial vm_wire_all(host, task VM_WIRE_ALL) in glibc startup to fail with KERN_NO_SPACE. --- vm/vm_map.c | 31 ++- 1 file changed, 26

[PATCH 11/11] add basic thread tests

2024-01-11 Thread Luca Dariz
--- tests/test-threads.c | 104 +++ tests/user-qemu.mk | 3 +- 2 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 tests/test-threads.c diff --git a/tests/test-threads.c b/tests/test-threads.c new file mode 100644 index ..06630

[PATCH 06/11] add basic vm tests

2024-01-11 Thread Luca Dariz
--- tests/test-vm.c| 85 ++ tests/user-qemu.mk | 3 +- 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 tests/test-vm.c diff --git a/tests/test-vm.c b/tests/test-vm.c new file mode 100644 index ..4ece792e --- /dev/null +

[PATCH 03/11] add gsync tests

2024-01-11 Thread Luca Dariz
--- tests/test-gsync.c | 122 + tests/user-qemu.mk | 3 +- 2 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 tests/test-gsync.c diff --git a/tests/test-gsync.c b/tests/test-gsync.c new file mode 100644 index ..a5160651 ---

[PATCH 09/11] add raw mach_msg tests

2024-01-11 Thread Luca Dariz
--- tests/test-machmsg.c | 405 +++ tests/user-qemu.mk | 3 +- 2 files changed, 407 insertions(+), 1 deletion(-) create mode 100644 tests/test-machmsg.c diff --git a/tests/test-machmsg.c b/tests/test-machmsg.c new file mode 100644 index ..60f3f

[PATCH 02/11] add mach_host tests

2024-01-11 Thread Luca Dariz
--- tests/test-mach_host.c | 81 ++ tests/user-qemu.mk | 3 +- 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 tests/test-mach_host.c diff --git a/tests/test-mach_host.c b/tests/test-mach_host.c new file mode 100644 index .

[PATCH 2/3] remove machine/machspl.h as it duplicates machine/spl.h

2024-03-09 Thread Luca Dariz
From: LD --- device/chario.c | 2 +- device/ds_routines.c | 4 ++-- device/net_io.c | 4 ++-- i386/Makefrag_x86.am | 1 - i386/i386/db_interface.c | 2 +- i386/i386/db_trace.c | 2 +- i386/i386/fpu.c

[PATCH 1/3] x86_64: split SET_KERNEL_SEGMENTS() for NCPU > 1

2024-03-09 Thread Luca Dariz
This allows 32on64 to work again. Also, it's a clearer indication of a missing part. --- x86_64/locore.S | 10 +++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/x86_64/locore.S b/x86_64/locore.S index 806762bb..8f39a677 100644 --- a/x86_64/locore.S +++ b/x86_64/locore.S @@ -

[PATCH 1/2] RFC enhance tracing utilities

2024-03-09 Thread Luca Dariz
This extends the previous debug utility to trace system calls with more events and the ability to control the tracing from userspace, collecting a trace of the whole systems. This tool was quite useful in porting the rpc format to 64 bit and handle the 32to64 translation, but also to debug user-sp

[PATCH 2/2] RFC: add kernel trace utilities

2024-03-09 Thread Luca Dariz
These are some utilities I used to decode and control the kernel trace, compiled as part of gnumach just so it's easier to build them. I'm not sure if they should be in their own package, for now they complement the kernel tracing patch so it can be tested more easily. With ktrace we can collect t

[PATCH 3/3] move x86 copy_user.[ch] to ipc/ and make it arch-indipendent

2024-03-09 Thread Luca Dariz
From: LD --- Makefrag.am| 2 ++ i386/Makefrag.am | 1 - {x86_64 => ipc}/copy_user.c| 7 +-- {i386/i386 => ipc}/copy_user.h | 18 +- ipc/ipc_kmsg.c | 2 +- ipc/ipc_mqueue.c | 2 +- ipc/mach_msg.c

Re: [PATCH 1/2] RFC enhance tracing utilities

2024-03-09 Thread Luca Dariz
Il 09/03/24 16:24, Etienne Brateau ha scritto: Le sam. 9 mars 2024 à 15:03, Luca Dariz diff --git a/i386/i386/debug.h b/i386/i386/debug.h index 84397ba8..eff330c6 100644 --- a/i386/i386/debug.h +++ b/i386/i386/debug.h @@ -54,6 +54,7 @@ void debug_trace_dump(void

[PATCH 2/2] tests/machmsg: check rx message size on different code paths

2024-06-11 Thread Luca Dariz
* tests/test-machmsg.c: add more combinations to existing cases: - make tx and rx ports independent in the send/receive tests - add two more variants for send/receive tests, using two separate system calls, using different code paths in mach_msg(). --- tests/test-machmsg.c | 117 ++

[PATCH 1/2] x86_64: fix msg size forwarding in case it's not set by userspace

2024-06-11 Thread Luca Dariz
* ipc/copy_user.c: recent MIG stubs should always fill the size correctly in the msg header, but we shouldn't rely on that. Instead, we use the size that was correctly copied-in, overwriting the value in the header. This is already done by the 32-bit copyinmsg(), and was missing in the 64-b

[PATCH] add xfloat thread state interface

2024-08-02 Thread Luca Dariz
* i386/i386/fpu.c: extend current getter and setter to support the extended state; move the struct casting here to reuse the locking and allocation logic for the thread state. * i386/i386/fpu.h: update prototypes to accept generic thread state * i386/i386/pcb.c: forward raw thread state to gett

Re: [PATCH] add xfloat thread state interface

2024-08-05 Thread Luca Dariz
Il 05/08/24 00:32, Samuel Thibault ha scritto: Hello, Luca Dariz, le ven. 02 août 2024 17:32:34 +0200, a ecrit: +#define XFP_STATE_BYTES (sizeof (struct i386_xfp_save)) That is not sufficient: depending on the sse level and the saving style, we have various amount of data to store. See

Re: [PATCH] add xfloat thread state interface

2024-08-17 Thread Luca Dariz
Hi, Il 05/08/24 20:28, Sergey Bugaev ha scritto: On Mon, Aug 5, 2024 at 9:23 PM Samuel Thibault wrote: Luca Dariz, le lun. 05 août 2024 14:52:24 +0200, a ecrit: Il 05/08/24 00:32, Samuel Thibault ha scritto: Luca Dariz, le ven. 02 août 2024 17:32:34 +0200, a ecrit: +#define XFP_STATE_BYTES

[PATCH v2 gnumach 1/3] add xfloat thread state interface

2024-08-21 Thread Luca Dariz
* i386/i386/fpu.c: extend current getter and setter to support the extended state; move the struct casting here to reuse the locking and allocation logic for the thread state; make sure the new state is set as valid, otherwise it won't be applied; add i386_get_xstate_size() to dynamically r

[PATCH gnumach 2/3] add tests for FLOAT/XFLOAT state

2024-08-21 Thread Luca Dariz
--- tests/include/testlib.h | 1 + tests/test-thread-state-fp.c | 232 +++ tests/testlib.c | 16 +++ tests/user-qemu.mk | 3 +- 4 files changed, 251 insertions(+), 1 deletion(-) create mode 100644 tests/test-thread-state-fp.c diff

[PATCH gnumach 3/3] add rpc interrupted test

2024-08-21 Thread Luca Dariz
* tests/test-machmsg.c: add two use cases used by glibc during signal handling * tests/include/testlib.h * tests/testlib.c: add new wait_thread_terminated() helper --- tests/include/testlib.h | 1 + tests/test-machmsg.c| 80 + tests/testlib.c

Re: [PATCH v2 gnumach 1/3] add xfloat thread state interface

2024-08-24 Thread Luca Dariz
Il 22/08/24 23:44, Samuel Thibault ha scritto: Luca Dariz, le mer. 21 août 2024 18:36:14 +0200, a ecrit: diff --git a/i386/include/mach/i386/mach_i386.defs b/i386/include/mach/i386/mach_i386.defs index 965d5c3b..61fed222 100644 --- a/i386/include/mach/i386/mach_i386.defs +++ b/i386/include

Re: [PATCH v2 gnumach 1/3] add xfloat thread state interface

2024-08-24 Thread Luca Dariz
Il 22/08/24 23:51, Samuel Thibault ha scritto: Luca Dariz, le mer. 21 août 2024 18:36:14 +0200, a ecrit: + } else if (flavor == i386_XFLOAT_STATE) { + int i; + struct i386_xfp_save *user_fp_state = (struct i386_xfp_save *) &xfstate->hw_state[0

Re: [PATCH v2 gnumach 1/3] add xfloat thread state interface

2024-08-24 Thread Luca Dariz
Il 22/08/24 23:26, Samuel Thibault ha scritto: Hello, Thanks for the improved version! Luca Dariz, le mer. 21 août 2024 18:36:14 +0200, a ecrit: @@ -495,10 +534,11 @@ ASSERT_IPL(SPL0); * concurrent fpu_set_state or fpu_get_state. */ kern_return_t -fpu_get_state(const thread_t thread

Re: [PATCH gnumach 2/3] add tests for FLOAT/XFLOAT state

2024-08-24 Thread Luca Dariz
Il 23/08/24 11:50, Sergey Bugaev ha scritto: On Wed, Aug 21, 2024 at 7:37 PM Luca Dariz wrote: +#include + +static void printx(struct i386_xfloat_state *state, int size) +{ + printf("xfloat init %d fp %d exc %d\n", + state->initialized, state->fpkind, state->exc

[PATCH gnumach v3 2/3] add tests for FLOAT/XFLOAT state

2024-09-04 Thread Luca Dariz
--- tests/include/testlib.h | 1 + tests/test-thread-state-fp.c | 240 +++ tests/testlib.c | 16 +++ tests/user-qemu.mk | 3 +- 4 files changed, 259 insertions(+), 1 deletion(-) create mode 100644 tests/test-thread-state-fp.c diff

[PATCH gnumach 3/3] x86_64: fix double fault handler

2024-09-04 Thread Luca Dariz
* x86_64/locore.S: adjust to the changes in the thread state structure (segment registers), and add the missing opcode. --- x86_64/locore.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x86_64/locore.S b/x86_64/locore.S index 8f39a677..376f41c1 100644 --- a/x86_64/locore.S

[PATCH gnumach v3 1/3] add xfloat thread state interface

2024-09-04 Thread Luca Dariz
* i386/i386/fpu.c: extend current getter and setter to support the extended state; move the struct casting here to reuse the locking and allocation logic for the thread state; make sure the new state is set as valid, otherwise it won't be applied; add i386_get_xstate_size() to dynamically r

Re: [PATCH gnumach v3 2/3] add tests for FLOAT/XFLOAT state

2024-11-04 Thread Luca Dariz
Hi, Il 30/10/24 14:58, Samuel Thibault ha scritto: Hello, Just to make sure: are you working on making glibc use it for signal context management? I started to have a look at it, but I didn't progress much yet. On this topic, would it be good enough to work on top of the upstream master bra

[PATCH mig v2] header: add definitions for RPC presence and IDs

2025-01-06 Thread Luca Dariz
This allows to check at compilation time for some rpc (as done for example in glibc for thread_set/get_name() and host_page_size()). Also the IDs can be useful for testing purposes, or when assembling messages manually. --- header.c | 14 ++ mig_string.h | 1 + string.c | 11 +

[PATCH mig] header: add definitions for RPC presence and IDs

2025-01-05 Thread Luca Dariz
This allows to check at compilation time for some rpc (as done in glibc for thread_set/get_name() and host_page_size()). Also the IDs can be useful for testing purposes, or when assembling messages manually. --- header.c | 10 ++ 1 file changed, 10 insertions(+) diff --git a/header.c b/he

[PATCH] hurd: save xstate during signal handling

2025-03-19 Thread Luca Dariz
. * sysdeps/mach/hurd/x86_64/bits/sigcontext.h: add xstate to the sigcontext structure. * sysdeps/mach/hurd/x86_64/sigreturn.c: restore xstate from the saved context Signed-off-by: Luca Dariz --- hurd/Makefile | 5 + hurd/test-sig-rpc-interrupted.c

<    1   2