diff options
author | Arne Babenhauserheide <arne_bab@web.de> | 2009-07-15 14:34:14 +0200 |
---|---|---|
committer | Arne Babenhauserheide <arne_bab@web.de> | 2009-07-15 14:34:14 +0200 |
commit | 0480c16bdf0a5b826ae0616bbe6f4cfc65294509 (patch) | |
tree | 256a8d172822c07722d2518f3aa67c9e22b77e04 /open_issues | |
parent | 4ad8f285006b0edae8fe9c748714796a8dca9b6f (diff) | |
parent | 67d7e6eb332d42a7fc636dbb26a5ee0515ec55f7 (diff) |
Merge branch 'master' of arnebab@flubber:~hurd-web/hurd-web
Diffstat (limited to 'open_issues')
-rw-r--r-- | open_issues/crash_server.mdwn | 152 | ||||
-rw-r--r-- | open_issues/device_drivers_and_io_systems.mdwn | 24 | ||||
-rw-r--r-- | open_issues/time.mdwn | 55 | ||||
-rw-r--r-- | open_issues/user-space_device_drivers.mdwn | 55 | ||||
-rw-r--r-- | open_issues/xen_crash_copy-size_le_page_size.mdwn | 65 |
5 files changed, 348 insertions, 3 deletions
diff --git a/open_issues/crash_server.mdwn b/open_issues/crash_server.mdwn new file mode 100644 index 00000000..71f495cc --- /dev/null +++ b/open_issues/crash_server.mdwn @@ -0,0 +1,152 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_hurd]] + +Given an `a.out` executable that only does `raise (SIGABRT)`, invoking that +one... + + * ... against `crash-dump-core` will... + + * ... not overwrite existing `core` files. + + Is this reasonable? Linux does overwrite them, for example. + + * ... show big variances in running-time behavior: + + $ TIMEFORMAT='real %R user %U system %S' + $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core + Aborted (core dumped) + real 1.350 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 21:59 core + $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core + Aborted (core dumped) + real 22.771 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 21:59 core + $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core + Aborted (core dumped) + real 1.367 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:00 core + $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core + Aborted (core dumped) + real 5.789 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:00 core + $ rm -f core; time env CRASHSERVER=/servers/crash-dump-core ./a.out; ls -l core + Aborted (core dumped) + real 22.664 user 0.010 system 0.000 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:01 core + + * ... produce a huge `core` file: + + $ du -hs core + 17M core + + On Linux, the `core` file occupies 76 KiB of disk space, which seems + much more reasonable. + + * ... produce an invalid `core` file: + + $ gdb a.out core + warning: core file may not match specified executable file. + [New Thread 76651] + + warning: Wrong size fpregset in core file. + Reading symbols from /lib/libc.so.0.3...[...] + Core was generated by `./a.out'. + Program terminated with signal 6, Aborted. + + warning: Wrong size fpregset in core file. + #0 0x00000000 in ?? () + (gdb) bt + #0 0x00000000 in ?? () + Cannot access memory at address 0x17 + + [[!tag open_issue_gdb]] Probably the `crash` server code and [[GDB]] are + out of sync. + + * ... against `crash-suspend` will... + + * ... not work at all: + + $ CRASHSERVER=/servers/crash-suspend ./a.out + $ [returns to the shell and doesn't suspended] + + * ... show big variances in running-time behavior: + + $ TIMEFORMAT='real %R user %U system %S' + $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core + Aborted (core dumped) + real 1.381 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core + $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core + Aborted (core dumped) + real 1.332 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core + $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core + Aborted (core dumped) + real 21.228 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:04 core + $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core + Aborted (core dumped) + real 1.323 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:05 core + $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core + Aborted (core dumped) + real 22.279 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:05 core + $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core + Aborted (core dumped) + real 1.362 user 0.000 system 0.000 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core + $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core + Aborted (core dumped) + real 21.110 user 0.000 system 0.000 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core + $ rm -f core; time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core + Aborted (core dumped) + real 1.350 user 0.000 system 0.020 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core + + * ... can reliably crash GNU Mach: + + This happens if a `core` file is already present (and won't get + overwritten; see above). I reproduced this three times. + + $ TIMEFORMAT='real %R user %U system %S' + $ time env CRASHSERVER=/servers/crash-suspend ./a.out; ls -l core + Aborted + real 2.856 user 0.000 system 0.010 + -rw------- 1 tschwinge tschwinge 17031168 Jul 7 22:08 core + + panic: zalloc: zone kalloc.8192 exhausted + Kernel Breakpoint trap, eip 0x20020a77 + Stopped at 0x20020a76: int $3 + db> trace + 0x20020a76(2006aba8,4d0f7e9c,200209b0,0,0) + 0x20020a4d(2006b094,2006ae40,2000,20016803,4a5f4114) + 0x2002bca5(49a03564,1,0,9,1000) + 0x20022f4c(2000,4a5f45d4,4a84879c,49a46564,4ac43e78) + 0x20021e65(4ac43e78,4a5f45d4,4a5f4114,0,0) + 0x2005309d(2106ba9c,3,38,28,1783) + Bad frame pointer: 0x2106ba78 + + $ addr2line -i -f -e /boot/gnumach-xen 0x20020a76 0x20020a4d 0x2002bca5 0x20022f4c 0x20021e65 0x2005309d + Debugger + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:105 + panic + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:148 + zalloc + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/zalloc.c:470 + kalloc + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/kalloc.c:185 + ipc_kobject_server + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/ipc_kobject.c:76 + mach_msg_trap + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/ipc/mach_msg.c:1367 diff --git a/open_issues/device_drivers_and_io_systems.mdwn b/open_issues/device_drivers_and_io_systems.mdwn index 57a96cd0..f84ddce8 100644 --- a/open_issues/device_drivers_and_io_systems.mdwn +++ b/open_issues/device_drivers_and_io_systems.mdwn @@ -15,6 +15,8 @@ in general. Also see [[user-space device drivers]]. +[[!toc levels=2]] + # Documentation @@ -63,7 +65,27 @@ Also see [[user-space device drivers]]. 2004, Joshua Levasseur, Volkmar Uhlig, Jan Stoess, Stefan Götz -# Projects +# External Projects * [Building Linux Device Drivers on FreeBSD](http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html) + + * [Project UDI](http://www.projectudi.org/), a multi-company effort to define + a Uniform Driver Interface + + * [The Free Software Movement and + UDI](http://www.gnu.org/philosophy/udi.html) + + * [OSKit](http://www.cs.utah.edu/flux/oskit/) + + * [Unofficial OSKit source](http://www.nongnu.org/oskit/) on Savannah + + * [[microkernel/Mach]]-like + + It might be possible to integrate these systems' device drivers, as they're + expected to mostly be using the same interfaces as the current in-kernel + Mach drivers are. + + * OSF Mach + + * Darwin diff --git a/open_issues/time.mdwn b/open_issues/time.mdwn new file mode 100644 index 00000000..eda5b635 --- /dev/null +++ b/open_issues/time.mdwn @@ -0,0 +1,55 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_porting]] + +Neither the `time` executable from the GNU time package work completely +correctly, nor does the GNU Bash built-in one. + + tschwinge@flubber:~ $ \time sleep 2 + 0.00user 0.00system 9:38:00elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k + 0inputs+0outputs (0major+0minor)pagefaults 0swaps + tschwinge@flubber:~ $ \time sleep 4 + 0.00user 0.00system 18:50:25elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k + 0inputs+0outputs (0major+0minor)pagefaults 0swaps + tschwinge@flubber:~ $ \time sleep 6 + 0.00user 0.00system 28:00:53elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k + 0inputs+0outputs (0major+0minor)pagefaults 0swaps + tschwinge@flubber:~ $ time sleep 2 + + real 0m2.093s + user 0m0.000s + sys 0m0.011s + tschwinge@flubber:~ $ time sleep 4 + + real 0m4.083s + user 0m0.000s + sys 0m0.010s + tschwinge@flubber:~ $ time sleep 6 + + real 0m6.164s + user 0m0.000s + sys 0m0.010s + +GNU time's *elapsed* value is off by some factor. + + $ \time factor 1111111111111111111 + 1111111111111111111: 1111111111111111111 + 0.00user 0.00system 52:39:24elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k + 0inputs+0outputs (0major+0minor)pagefaults 0swaps + $ time factor 1111111111111111111 + 1111111111111111111: 1111111111111111111 + + real 0m11.424s + user 0m0.000s + sys 0m0.010s + +As above; also here all the running time should be attriuted to *user* time. +This is probably a [[!taglink open_issue_gnumach]]. diff --git a/open_issues/user-space_device_drivers.mdwn b/open_issues/user-space_device_drivers.mdwn index 154a525c..43795705 100644 --- a/open_issues/user-space_device_drivers.mdwn +++ b/open_issues/user-space_device_drivers.mdwn @@ -14,6 +14,57 @@ This is a collection of resources concerning *user-space device drivers*. Also see [[device drivers and IO systems]]. +[[!toc levels=2]] + + +# Issues + +## IRQs + + * Can be modeled using [[RPC]]s. + + * Security considerations: IRQ sharing. + + * *Omega0* paper defines an interface. + +## DMA + + * Security considerations. + + * I/O MMU. + +## I/O Ports + + * Security considerations. + +## PCI and other buses + + * Security considerations: sharing. + +## Latency of doing RPCs + + * [[GNU Mach|microkernel/mach/gnumach]] is said to have a high overhead when + doing RPC calls. + + +# Plan + + * Examine what other systems are doing. + + * L4 + + * Hurd on L4: deva, fabrica + + * Minix 3 + + * Start with a simple driver and implement the needed infrastructure (see + *Issues* above) as needed. + + * <http://savannah.nongnu.org/projects/user-drivers/> + + Some (unfinished?) code written by Robert Millan in 2003: PC keyboard + and parallel port drivers, using `libtrivfs`. + # Documentation @@ -92,8 +143,8 @@ Also see [[device drivers and IO systems]]. Ganapathy, Arini Balakrishnan, Michael M. Swift, Somesh Jha -# Projects +# External Projects * <http://ertos.nicta.com.au/research/drivers/uldd/> - * <http://savannah.nongnu.org/projects/user-drivers> + * <http://gelato.unsw.edu.au/IA64wiki/UserLevelDrivers> diff --git a/open_issues/xen_crash_copy-size_le_page_size.mdwn b/open_issues/xen_crash_copy-size_le_page_size.mdwn new file mode 100644 index 00000000..09287274 --- /dev/null +++ b/open_issues/xen_crash_copy-size_le_page_size.mdwn @@ -0,0 +1,65 @@ +[[!meta copyright="Copyright © 2009 Free Software Foundation, Inc."]] + +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] + +[[!tag open_issue_gnumach]] + +`/dev/hd2` is 2 GiB in size (backed by LVM), unformatted. + + # mkfs.ext2 -o hurd /dev/hd2 + mke2fs 1.41.7 (29-June-2009) + hd2 count 1 + re-open, hd2 count 2 + ext2fs_check_if_mount: Can't check if filesystem is mounted due to missing mtab file while determining whether /dev/hd2 is mounted. + re-open, hd2 count 3 + re-open, hd2 count 4 + re-open, hd2 count 5 + Filesystem label= + OS type: Hurd + Block size=4096 (log=2) + Fragment size=4096 (log=2) + 131072 inodes, 524288 blocks + 26214 blocks (5.00%) reserved for the super user + First data block=0 + Maximum filesystem blocks=536870912 + 16 block groups + 32768 blocks per group, 32768 fragments per group + 8192 inodes per group + Superblock backups stored on blocks: + 32768, 98304, 163840, 229376, 294912 + + Assertion `copy->size <= PAGE_SIZE' failed in file "../gnumach-1-branch-Xen-branch/xen/block.c", line 536 + Kernel Breakpoint trap, eip 0x20020a77 + Stopped at 0x20020a76: int $3 + db> trace + 0x20020a76(2006abc1,2006ba03,2006782c,218,2e2be8d4) + 0x20020ace(2006ba03,2006782c,218,2e3629a0,32000) + 0x2003e9d5(2de04764,2e2be0b8,12,0,3fff80) + 0x200476e6(2de5ad54,2e2db010,2e30a9a0,2de3a854,2de5ad44) + 0x20021ed4(2de5ad44,2e2bb2e0,2e2bb2a0,0,0) + 0x2005309d(129b8f0,3,38,28,e) + 0x20006838(129b8f0,3,38,28,e) + >>>>> user space <<<<< + + + $ addr2line -i -f -e /boot/gnumach-xen 0x20020a76 0x20020ace 0x2003e9d5 0x200476e6 0x20021ed4 0x2005309d 0x20006838 + Debugger + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/debug.c:105 + Assert + ??:0 + device_write + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/xen/block.c:537 + _Xdevice_write + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/device/device.server.c:253 + ipc_kobject_server + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/kern/ipc_kobject.c:201 + mach_msg_trap + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/ipc/mach_msg.c:1367 + mach_call_call + /home/tschwinge/tmp/gnumach/gnumach-1-branch-Xen-branch.build/../gnumach-1-branch-Xen-branch/i386/i386/locore.S:1083 |