Hi ,
In the Genode RPC we start the client and the server in the same time as in Hello world tutorial. in my case i want the server to serve many clients in the same time .if i create run file for each client each time a new server instance (process) will be created . are there any ways to make the second client use the same running server . i tried to run the both client in same run file but it did not work.I am sure that there are some way to get capability from the existing server .
thank you in advance .
Hi Mohammad,
In the Genode RPC we start the client and the server in the same time as in Hello world tutorial. in my case i want the server to serve many clients in the same time .if i create run file for each client each time a new server instance (process) will be created . are there any ways to make the second client use the same running server . i tried to run the both client in same run file but it did not work.I am sure that there are some way to get capability from the existing server .
taking the hello-world tutorial as example, you can start any number of clients. E.g., the attached patch changes the 'hello_tutorial/run/hello.run' script to start two clients instead of one. Both are talking to the same server. Note that each program started by init must have a unique name. Hence, the second client is named differently and executable binary is explicitly specified using the '<binary>' node.
You can apply the patch via
cd <genode-dir> patch -p1 < hello_two_clients.diff
After applying the patch, change to your build directory and execute the run script via 'make run/hello'.
For more detailed information about how session requests by clients are routed to servers, please refer to the documentation of the init process:
http://genode.org/documentation/developer-resources/init
Best regards Norman
Hi,
I have a few stupid questions regarding the use of real hardware.
I want to access files from a harddisk using a block cache. The partition would be /sda7/test in ext2 format. (and for example file1.txt) I tried to start nova directly form disc - works with mouse & keyboard now.
With the example file in /dde_rump/run/rump2_ext2.run I do not see how I could use an existing harddrive.
I understand the script as following: First a bin/ext2.raw file is created and then a file system is created with mke2fs. The ram_blk points to the file. How can it be pointed to a drive like /sda7 instead? Is it even possible now to use a real harddsic file system? Or would i need to create a file like in the example (only permanent) and put the file together with the rest of the program in grub so that nova boots with providing the file?
The second part of the question is according to things needed to execute the rump_ext2.run script. As i tried to create prepare PKG=libs i needded to install: subversion, flex, bison Are they missing in the build tools or is no specific version needed?
The next questions are regarding the block cache. If I try to execute the script, i get a Tests finished succesful, but a lot of messages like [init] Cannot respond to resource request - out of memory [init ->blk_cache] could not expand dataspace pool
To be honest I do not see in the configuration at all how it should work. If i understand it correctly a qemu with 64 MB RAM is started, and test-blk-cli is given a quantum of 2GB? The test-blk-cli gets a route for Block to the Cache and the Cache to Blksrv. What I don't understand with the sizes is: Why has the client the largest size and not the smallest? If it has the largest it could just read complete files and keep it in memory?
I tried the following: I copied the rump_ext2.run script and created an entry with start name blk_cache and put a route from rump_fs to Block child blk_cache, from blk_Cache as child ram_blk. I started it and then see that the script said that blk_cache was not found, but it run succesful.
My question is therefore: if a service name is in multiple clients and one client in a route is not available, is automatically another client with same service name used? Or have i forgot something? Afterwards i included in the set build_components section server/blk_cache (after drivers/timer) and entered as boot module blk_cache. Is this the correct way of including the cache?
The result of this was that I got an output with: [init -> blk_cache] updating quota for SIGNAL session, an init rump_fs upgrade quota output and afterwards and a long stop after init->rump_fs Backend::Backend() Backend blk_size 512 Afterwards the script stopped with Test execution timeout. with error 254) What could I have done wrong with the configuration of this scenario?
Best regards Wolfgang Schmidt
Hi,
On 05/11/2014 09:17 PM, w_schmidt@...181... wrote:
Hi,
I have a few stupid questions regarding the use of real hardware.
I want to access files from a harddisk using a block cache. The partition would be /sda7/test in ext2 format. (and for example file1.txt) I tried to start nova directly form disc - works with mouse & keyboard now.
With the example file in /dde_rump/run/rump2_ext2.run I do not see how I could use an existing harddrive.
I understand the script as following: First a bin/ext2.raw file is created and then a file system is created with mke2fs. The ram_blk points to the file. How can it be pointed to a drive like /sda7 instead? Is it even possible now to use a real harddsic file system? Or would i need to create a file like in the example (only permanent) and put the file together with the rest of the program in grub so that nova boots with providing the file?
Assuming your machine is an x86 derivative and supports AHCI, you could use Genode's AHCI driver, which will expose a block sesssion (see: os/src/drivers/ahci/README). In order to access the partitions on your disk, a server called 'part_blk' is required (see: os/src/server/part_blk/README for its configuration). So, you would have to remove 'ram_blk' and add 'ahci_drv', 'part_blk' (routed to 'ahci_drv'), adjust 'rump_fs' to be routed to 'part_blk' partition 7.
The second part of the question is according to things needed to execute the rump_ext2.run script. As i tried to create prepare PKG=libs i needded to install: subversion, flex, bison Are they missing in the build tools or is no specific version needed?
There should be no specific version needed.
The next questions are regarding the block cache. If I try to execute the script, i get a Tests finished succesful, but a lot of messages like [init] Cannot respond to resource request - out of memory [init ->blk_cache] could not expand dataspace pool
The cache is greedy and tries to get as much memory from its parent as possible. By the way, rump has a build in block cache also.
To be honest I do not see in the configuration at all how it should work. If i understand it correctly a qemu with 64 MB RAM is started, and test-blk-cli is given a quantum of 2GB?
That only means that test-blk-cli will get all the remaining RAM.
The test-blk-cli gets a route for Block to the Cache and the Cache to Blksrv. What I don't understand with the sizes is: Why has the client the largest size and not the smallest? If it has the largest it could just read complete files and keep it in memory?
I think the author just did not want to calculate the amount of RAM required for the test program.
I tried the following: I copied the rump_ext2.run script and created an entry with start name blk_cache and put a route from rump_fs to Block child blk_cache, from blk_Cache as child ram_blk. I started it and then see that the script said that blk_cache was not found, but it run succesful.
My question is therefore: if a service name is in multiple clients and one client in a route is not available, is automatically another client with same service name used? Or have i forgot something?
It worked because 'blk_cache' wasn't started, and therefore only one block session was announced ('ram_blk'). If the block cache had been started and 'test-libc_vfs' didn't have a route entry for the block service, init would complain about ambiguous routes to service "Block".
Afterwards i included in the set build_components section server/blk_cache (after drivers/timer) and entered as boot module blk_cache. Is this the correct way of including the cache?
Yes it is!
The result of this was that I got an output with: [init -> blk_cache] updating quota for SIGNAL session, an init rump_fs upgrade quota output and afterwards and a long stop after init->rump_fs Backend::Backend() Backend blk_size 512 Afterwards the script stopped with Test execution timeout. with error 254) What could I have done wrong with the configuration of this scenario?
Ok, I will try to reproduce the behavior.
Regards,
Sebastian
Hi,
Thanks for the answer.
I want to access files from a harddisk using a block cache. The partition would be /sda7/test in ext2 format. (and for example file1.txt) I tried to start nova directly form disc - works with mouse & keyboard now.
Assuming your machine is an x86 derivative and supports AHCI, you could use Genode's AHCI driver, which will expose a block sesssion (see: os/src/drivers/ahci/README). In order to access the partitions on your disk, a server called 'part_blk' is required (see: os/src/server/part_blk/README for its configuration). So, you would have to remove 'ram_blk' and add 'ahci_drv', 'part_blk' (routed to 'ahci_drv'), adjust 'rump_fs' to be routed to 'part_blk' partition 7.
I have 2 possible machines with AHCI and AMD64/Intel64.
Maybe I understand it completly wrong, but in the AHCI description there is a part with "On real hardware and on kernels taking advantage of I/O APICs (namely NOVA and Fiasco.OC) we still lack support for ACPI parsing and thus for interrupts, leading to a non-working driver." ( https://github.com/genodelabs/genode/blob/master/repos/os/src/drivers/ahci/R... )
Doesn't that mean that the AHCI driver won't work with nova or real hard drive? That sentence is one of the reasons why I ask. If nova /real hardware does not work like mentioned in the readme, is there another way to load from disc? Or should another kernel (?L4k?) do the trick?
The cache is greedy and tries to get as much memory from its parent as possible. By the way, rump has a build in block cache also.
Yes I have seen that in the rump description there stood something that the server will use most of the RAM for cache.
I thought I coudl do the following: Give the block cache e.g. 16MB RAM. Give the Rump Server 6 MB, and load different 4 MB files. I thought that by loading the second file the first one will get out of the Rump cache but loaded by the block cache.
I have seen that the framebuffer seems to have a sort of multiplexer. Is something similiar available for filesystems?
RAM...
I think the author just did not want to calculate the amount of RAM required for the test program.
O.K.
Afterwards i included in the set build_components section server/blk_cache (after drivers/timer) and entered as boot module blk_cache. Is this the correct way of including the cache?
Yes it is!
Good. :-)
The result of this was that I got an output with: [init -> blk_cache] updating quota for SIGNAL session, an init rump_fs upgrade quota output and afterwards and a long stop after init->rump_fs Backend::Backend() Backend blk_size 512 Afterwards the script stopped with Test execution timeout. with error 254) What could I have done wrong with the configuration of this scenario?
Ok, I will try to reproduce the behavior.
Thanks, that would be interesting. If it helps I can upload my configuration file somewhere?
I think I can try file access and AHCI first on friday (ATM a lot of work, I'm interested at genode because of part time study)
Thanks & Best regards, Wolfgang Schmidt
Hi again,
On 05/14/2014 09:27 PM, w_schmidt@...181... wrote:
Hi,
Thanks for the answer.
I want to access files from a harddisk using a block cache. The partition would be /sda7/test in ext2 format. (and for example file1.txt) I tried to start nova directly form disc - works with mouse & keyboard now.
Assuming your machine is an x86 derivative and supports AHCI, you could use Genode's AHCI driver, which will expose a block sesssion (see: os/src/drivers/ahci/README). In order to access the partitions on your disk, a server called 'part_blk' is required (see: os/src/server/part_blk/README for its configuration). So, you would have to remove 'ram_blk' and add 'ahci_drv', 'part_blk' (routed to 'ahci_drv'), adjust 'rump_fs' to be routed to 'part_blk' partition 7.
I have 2 possible machines with AHCI and AMD64/Intel64.
Maybe I understand it completly wrong, but in the AHCI description there is a part with "On real hardware and on kernels taking advantage of I/O APICs (namely NOVA and Fiasco.OC) we still lack support for ACPI parsing and thus for interrupts, leading to a non-working driver." ( https://github.com/genodelabs/genode/blob/master/repos/os/src/drivers/ahci/R... )
Doesn't that mean that the AHCI driver won't work with nova or real hard drive? That sentence is one of the reasons why I ask. If nova /real hardware does not work like mentioned in the readme, is there another way to load from disc? Or should another kernel (?L4k?) do the trick?
Ops, I should take this part out of the README. We do have ACPI parsing and interrupt re-write support by now. You will need to build 'drivers/acpi', 'drivers/pci', and if you use NOVA and if your machine has an IOMMU 'drivers/pci/device_pd'. In the Genode configuration you only need to start the 'acpi_drv', which will start the other one or two as children. A sample run script can be found under 'os/run/ahci.run'
Another way to access hard disks (again on x86) is to use the IDE interface, which is supported by the ATAPI driver ('drivers/atapi'), again have a look at the README in 'os/drivers/atapi'.
The cache is greedy and tries to get as much memory from its parent as possible. By the way, rump has a build in block cache also.
Yes I have seen that in the rump description there stood something that the server will use most of the RAM for cache.
I thought I coudl do the following: Give the block cache e.g. 16MB RAM. Give the Rump Server 6 MB, and load different 4 MB files. I thought that by loading the second file the first one will get out of the Rump cache but loaded by the block cache.
Okay that should work, I would give rump a little more memory.
I have seen that the framebuffer seems to have a sort of multiplexer. Is something similiar available for filesystems?
The rump server supports connections from multiple clients, so one could see it as sort of a multiplexer.
RAM...
I think the author just did not want to calculate the amount of RAM required for the test program.
O.K.
Afterwards i included in the set build_components section server/blk_cache (after drivers/timer) and entered as boot module blk_cache. Is this the correct way of including the cache?
Yes it is!
Good. :-)
The result of this was that I got an output with: [init -> blk_cache] updating quota for SIGNAL session, an init rump_fs upgrade quota output and afterwards and a long stop after init->rump_fs Backend::Backend() Backend blk_size 512 Afterwards the script stopped with Test execution timeout. with error 254) What could I have done wrong with the configuration of this scenario?
Ok, I will try to reproduce the behavior.
Thanks, that would be interesting. If it helps I can upload my configuration file somewhere?
I will try it out first as described above, if I cannot reproduce it you could fork Genode on GitHub and push it into a branch there, or if it is just a run script just send it via email.
I think I can try file access and AHCI first on friday (ATM a lot of work, I'm interested at genode because of part time study)
Good luck!
Sebastian
Hi,
Just another small question: The binaries for drivers like ahci or pci are ending with _drv. The binary of acpi not. Is there a rule of thumb for the naming?
Best regards Wolfgang
----- Ursprüngliche Nachricht ----- Von: "Sebastian Sumpf" <Sebastian.Sumpf@...1...> Gesendet: 14.05.2014 22:06 An: "Genode OS Framework Mailing List" genode-main@lists.sourceforge.net Betreff: Re: Using a real harddisk
Hi again,
On 05/14/2014 09:27 PM, w_schmidt@...181... wrote:
Hi,
Thanks for the answer.
I want to access files from a harddisk using a block cache. The partition would be /sda7/test in ext2 format. (and for example file1.txt) I tried to start nova directly form disc - works with mouse & keyboard now.
Assuming your machine is an x86 derivative and supports AHCI, you could use Genode's AHCI driver, which will expose a block sesssion (see: os/src/drivers/ahci/README). In order to access the partitions on your disk, a server called 'part_blk' is required (see: os/src/server/part_blk/README for its configuration). So, you would have to remove 'ram_blk' and add 'ahci_drv', 'part_blk' (routed to 'ahci_drv'), adjust 'rump_fs' to be routed to 'part_blk' partition 7.
I have 2 possible machines with AHCI and AMD64/Intel64.
Maybe I understand it completly wrong, but in the AHCI description there is a part with "On real hardware and on kernels taking advantage of I/O APICs (namely NOVA and Fiasco.OC) we still lack support for ACPI parsing and thus for interrupts, leading to a non-working driver." ( https://github.com/genodelabs/genode/blob/master/repos/os/src/drivers/ahci/R... )
Doesn't that mean that the AHCI driver won't work with nova or real hard drive? That sentence is one of the reasons why I ask. If nova /real hardware does not work like mentioned in the readme, is there another way to load from disc? Or should another kernel (?L4k?) do the trick?
Ops, I should take this part out of the README. We do have ACPI parsing and interrupt re-write support by now. You will need to build 'drivers/acpi', 'drivers/pci', and if you use NOVA and if your machine has an IOMMU 'drivers/pci/device_pd'. In the Genode configuration you only need to start the 'acpi_drv', which will start the other one or two as children. A sample run script can be found under 'os/run/ahci.run'
Another way to access hard disks (again on x86) is to use the IDE interface, which is supported by the ATAPI driver ('drivers/atapi'), again have a look at the README in 'os/drivers/atapi'.
The cache is greedy and tries to get as much memory from its parent as possible. By the way, rump has a build in block cache also.
Yes I have seen that in the rump description there stood something that the server will use most of the RAM for cache.
I thought I coudl do the following: Give the block cache e.g. 16MB RAM. Give the Rump Server 6 MB, and load different 4 MB files. I thought that by loading the second file the first one will get out of the Rump cache but loaded by the block cache.
Okay that should work, I would give rump a little more memory.
I have seen that the framebuffer seems to have a sort of multiplexer. Is something similiar available for filesystems?
The rump server supports connections from multiple clients, so one could see it as sort of a multiplexer.
RAM...
I think the author just did not want to calculate the amount of RAM required for the test program.
O.K.
Afterwards i included in the set build_components section server/blk_cache (after drivers/timer) and entered as boot module blk_cache. Is this the correct way of including the cache?
Yes it is!
Good. :-)
The result of this was that I got an output with: [init -> blk_cache] updating quota for SIGNAL session, an init rump_fs upgrade quota output and afterwards and a long stop after init->rump_fs Backend::Backend() Backend blk_size 512 Afterwards the script stopped with Test execution timeout. with error 254) What could I have done wrong with the configuration of this scenario?
Ok, I will try to reproduce the behavior.
Thanks, that would be interesting. If it helps I can upload my configuration file somewhere?
I will try it out first as described above, if I cannot reproduce it you could fork Genode on GitHub and push it into a branch there, or if it is just a run script just send it via email.
I think I can try file access and AHCI first on friday (ATM a lot of work, I'm interested at genode because of part time study)
Good luck!
Sebastian
Hello Wolfgang,
On Thu, May 15, 2014 at 07:04:08AM +0200, Wolfgang Schmidt wrote:
Just another small question: The binaries for drivers like ahci or pci are ending with _drv. The binary of acpi not. Is there a rule of thumb for the naming?
well spotted, the AHCI-driver naming does not adhere to our convention. As we plan to revise the implementation and unify the drivers for x86 and Exynos5, the new driver should be named ahci_drv.
Greets
-----Ursprüngliche Nachricht----- From: Sebastian Sumpf Sent: Wednesday, May 14, 2014 10:06 PM To: Genode OS Framework Mailing List Subject: Re: Using a real harddisk
Hi again,
I want to access files from a harddisk using a block cache. The partition would be /sda7/test in ext2 format. (and for example file1.txt) I tried
Assuming your machine is an x86 derivative and supports AHCI, you could use Genode's AHCI driver, which will expose a block sesssion (see: os/src/drivers/ahci/README). In order to access the partitions on your disk, a server called 'part_blk' is required (see: os/src/server/part_blk/README for its configuration). So, you would have to remove 'ram_blk' and add 'ahci_drv', 'part_blk' (routed to 'ahci_drv'), adjust 'rump_fs' to be routed to 'part_blk' partition 7.
The good thing: the timeout message seems to be gone. The bad thing:
I tried to execute the example. The run file is below attached inline If i try to execute it in qemu, i get a message: "[init -> acpi] ACPI table format not supported - will not rewrite GSIs" followed by a page fault "static void Genode::Pager_object::_page_fault_handler(): unhandled page fault, 'pager:ahci_ep' address=0x0 ip=0x10002c3" (The notebook is ad proposed an X201)
(The complete output is also attached below).
Am i missing something in the chain?
And I think I have to little knowledge of the ACPI mechanism. I found that GSI are Global System Interrupts but no clue what went wrong.
Best regards, Wolfgang
--- Runfile: # # Check used commands # #set mke2fs [check_installed mke2fs] #set dd [check_installed dd]
# # Build # set build_components { core init drivers/timer drivers/pci drivers/acpi drivers/ahci server/part_blk server/blk_cache server/ram_blk server/rump_fs test/libc_vfs }
build $build_components
create_boot_directory
# # Generate config # append config { <config> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> <service name="SIGNAL" /> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="acpi"> <resource name="RAM" quantum="6M"/> <binary name="acpi_drv"/> <provides> <service name="PCI"/> <service name="IRQ" /> </provides> <route> <service name="PCI"> <any-child /> </service> <any-service> <parent/> <any-child /> </any-service> </route> </start> <start name="ahci"> <binary name="ahci" /> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <service name="IRQ"><child name="acpi" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="part_blk"> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <any-service><child name="ahci"/> <parent/><any-child/></any-service> </route> <config> <policy label="blk_cache" partition="6"/> </config> </start> <start name="blk_cache"> <resource name="RAM" quantum="8M" /> <provides><service name="Block" /></provides> <route> <service name="Block"><child name="part_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="rump_fs"> <resource name="RAM" quantum="4M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="blk_cache" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="test-libc_vfs"> <resource name="RAM" quantum="4M"/> <config> <libc stdout="/dev/log"> <vfs> <dir name="dev"> <log/> </dir> <fs/> </vfs> </libc> </config> </start> </config>}
install_config $config
# # Boot modules #
# generic modules set boot_modules { core init timer test-libc_vfs ram_blk pci_drv pci_device_pd acpi_drv ahci part_blk blk_cache rump.lib.so rump_fs.lib.so rump_fs ld.lib.so libc.lib.so } #ext2.raw
build_boot_image $boot_modules
append qemu_args " -m 1024"
run_genode_until forever
--- output int main(): --- create local services --- int main(): --- start init --- int main(): transferred 978 MB to init [init -> acpi] available memory for ACPI 2048 kiB, for PCI_DRV 3536 kiB [init -> ahci] --- AHCI driver started --- [init -> rump_fs] Using ext2fs as file system [init -> rump_fs] int rumpuser_init(int, const rumpuser_hyperup*): RUMP ver: 17 [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_THREADS [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_VERBOSE [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): _RUMPUSER_NCPU [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_MEMLIMIT [init -> rump_fs] Asserting rump kernel 820 KB of RAM [init -> acpi] void Acpi_table::_parse_tables(T*, Genode::uint32_t) [with T = unsigned int; Genode::uint32_t = unsigned int]: Found MADT [init -> acpi] MADT IRQ 0 -> GSI 2 flags: 0 [init -> acpi] MADT IRQ 5 -> GSI 5 flags: d [init -> acpi] MADT IRQ 9 -> GSI 9 flags: d [init -> acpi] MADT IRQ 10 -> GSI 10 flags: d [init -> acpi] MADT IRQ 11 -> GSI 11 flags: d [init -> rump_fs] BOOTSTRAP [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_NVNODES [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_BLKFAIL [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_BLKSECTSHIFT Quota exceeded! amount=28672, size=4096, consumed=28672 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> acpi -> pci_drv] PCI driver started [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_MODULEBASE Quota exceeded! amount=36864, size=4096, consumed=36864 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): _RUMPUSER_HOSTNAME Quota exceeded! amount=45056, size=4096, consumed=45056 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> acpi -> pci_drv -> pci_device_pd] PCI device pd starting ... [init -> acpi -> pci_drv -> pci_device_pd] PCI device pd started [init -> acpi] ACPI table format not supported - will not rewrite GSIs no RM attachment (READ pf_addr=0 pf_ip=10002c3 from a17fefc6 ahci_ep) virtual void Genode::Signal_session_component::submit(Genode::Signal_context_capability, unsigned int): invalid signal-context capability static void Genode::Pager_object::_page_fault_handler(): unhandled page fault, 'pager:ahci_ep' address=0x0 ip=0x10002c3 int main(): --- init created, waiting for exit condition ---
Hello,
On 15.06.2014 18:22, w_schmidt@...181... wrote:
-----Ursprüngliche Nachricht----- From: Sebastian Sumpf Sent: Wednesday, May 14, 2014 10:06 PM To: Genode OS Framework Mailing List Subject: Re: Using a real harddisk
Hi again,
I want to access files from a harddisk using a block cache. The partition would be /sda7/test in ext2 format. (and for example file1.txt) I tried
Assuming your machine is an x86 derivative and supports AHCI, you could use Genode's AHCI driver, which will expose a block sesssion (see: os/src/drivers/ahci/README). In order to access the partitions on your disk, a server called 'part_blk' is required (see: os/src/server/part_blk/README for its configuration). So, you would have to remove 'ram_blk' and add 'ahci_drv', 'part_blk' (routed to 'ahci_drv'), adjust 'rump_fs' to be routed to 'part_blk' partition 7.
The good thing: the timeout message seems to be gone. The bad thing:
I tried to execute the example. The run file is below attached inline If i try to execute it in qemu, i get a message: "[init -> acpi] ACPI table format not supported - will not rewrite GSIs" followed by a page fault "static void Genode::Pager_object::_page_fault_handler(): unhandled page fault, 'pager:ahci_ep' address=0x0 ip=0x10002c3" (The notebook is ad proposed an X201)
You have to configure qemu that is provides a ahci device, please have a look in os/run/ahci.run for an example.
Nevertheless the ahci driver should not just die with a null pointer. The attached patch should give you an appropriate C++ exception message instead.
Alex.
(The complete output is also attached below).
Am i missing something in the chain?
And I think I have to little knowledge of the ACPI mechanism. I found that GSI are Global System Interrupts but no clue what went wrong.
Best regards, Wolfgang
--- Runfile: # # Check used commands # #set mke2fs [check_installed mke2fs] #set dd [check_installed dd]
# # Build # set build_components { core init drivers/timer drivers/pci drivers/acpi drivers/ahci server/part_blk server/blk_cache server/ram_blk server/rump_fs test/libc_vfs }
build $build_components
create_boot_directory
# # Generate config # append config {
<config> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/>repos/os/src/drivers/ahci/x86/ahci_driver.h <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> <service name="SIGNAL" /> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="acpi"> <resource name="RAM" quantum="6M"/> <binary name="acpi_drv"/> <provides> <service name="PCI"/> <service name="IRQ" /> </provides> <route> <service name="PCI"> <any-child /> </service> <any-service> <parent/> <any-child /> </any-service> </route> </start> <start name="ahci"> <binary name="ahci" /> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <service name="IRQ"><child name="acpi" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="part_blk"> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <any-service><child name="ahci"/> <parent/><any-child/></any-service> </route> <config> <policy label="blk_cache" partition="6"/> </config> </start> <start name="blk_cache"> <resource name="RAM" quantum="8M" /> <provides><service name="Block" /></provides> <route> <service name="Block"><child name="part_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="rump_fs"> <resource name="RAM" quantum="4M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="blk_cache" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="test-libc_vfs"> <resource name="RAM" quantum="4M"/> <config> <libc stdout="/dev/log"> <vfs> <dir name="dev"> <log/> </dir> <fs/> </vfs> </libc> </config> </start> </config>}
install_config $config
# # Boot modules #
# generic modules set boot_modules { core init timer test-libc_vfs ram_blk pci_drv pci_device_pd acpi_drv ahci part_blk blk_cache rump.lib.so rump_fs.lib.so rump_fs ld.lib.so libc.lib.so } #ext2.raw
build_boot_image $boot_modules
append qemu_args " -m 1024"
run_genode_until forever
--- output int main(): --- create local services --- int main(): --- start init --- int main(): transferred 978 MB to init [init -> acpi] available memory for ACPI 2048 kiB, for PCI_DRV 3536 kiB [init -> ahci] --- AHCI driver started --- [init -> rump_fs] Using ext2fs as file system [init -> rump_fs] int rumpuser_init(int, const rumpuser_hyperup*): RUMP ver: 17 [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_THREADS [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_VERBOSE [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): _RUMPUSER_NCPU [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_MEMLIMIT [init -> rump_fs] Asserting rump kernel 820 KB of RAM [init -> acpi] void Acpi_table::_parse_tables(T*, Genode::uint32_t) [with T = unsigned int; Genode::uint32_t = unsigned int]: Found MADT [init -> acpi] MADT IRQ 0 -> GSI 2 flags: 0 [init -> acpi] MADT IRQ 5 -> GSI 5 flags: d [init -> acpi] MADT IRQ 9 -> GSI 9 flags: d [init -> acpi] MADT IRQ 10 -> GSI 10 flags: d [init -> acpi] MADT IRQ 11 -> GSI 11 flags: d [init -> rump_fs] BOOTSTRAP [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_NVNODES [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_BLKFAIL [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_BLKSECTSHIFT Quota exceeded! amount=28672, size=4096, consumed=28672 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> acpi -> pci_drv] PCI driver started [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_MODULEBASE Quota exceeded! amount=36864, size=4096, consumed=36864 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): _RUMPUSER_HOSTNAME Quota exceeded! amount=45056, size=4096, consumed=45056 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> acpi -> pci_drv -> pci_device_pd] PCI device pd starting ... [init -> acpi -> pci_drv -> pci_device_pd] PCI device pd started [init -> acpi] ACPI table format not supported - will not rewrite GSIs no RM attachment (READ pf_addr=0 pf_ip=10002c3 from a17fefc6 ahci_ep) virtual void Genode::Signal_session_component::submit(Genode::Signal_context_capability, unsigned int): invalid signal-context capability static void Genode::Pager_object::_page_fault_handler(): unhandled page fault, 'pager:ahci_ep' address=0x0 ip=0x10002c3 int main(): --- init created, waiting for exit condition ---
HPCC Systems Open Source Big Data Platform from LexisNexis Risk Solutions Find What Matters Most in Your Big Data with HPCC Systems Open Source. Fast. Scalable. Simple. Ideal for Dirty Data. Leverages Graph Analysis for Fast Processing & Easy Data Exploration http://p.sf.net/sfu/hpccsystems _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi,
Still the same issue. ;-)
You have to configure qemu that is provides a ahci device, please have a look in os/run/ahci.run for an example.
Somehow works.
But still if i use the runfile below it ends with (equally if real hardware or qemu) [init->acpi->pci_drv] recource request: ram_quota=4198400 [init->acpi->pci_drv} virtual void Genode::Platform_env::release(): used before freeing emergency=516096 [init->acpi->pci_drv} virtual void Genode::Platform_env::release(): used after freeing emergency=516096 (sizes differ, sometimes 524288, 520192) afterwards there is just no more output.
Am i missing something in the chain or did i understand the directions parent and childs wrong?
Can blk_cache be larger then rump_fs?
Best regards, Wolfgang
--- Runfile: # # Check used commands # #set mke2fs [check_installed mke2fs] #set dd [check_installed dd]
# # Build # set build_components { core init drivers/timer drivers/pci drivers/acpi drivers/ahci server/part_blk server/blk_cache server/ram_blk server/rump_fs test/libc_vfs }
build $build_components
create_boot_directory
# # Generate config # append config {
<config> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/>repos/os/src/drivers/ahci/x86/ahci_driver.h <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> <service name="SIGNAL" /> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="acpi"> <resource name="RAM" quantum="6M"/> <binary name="acpi_drv"/> <provides> <service name="PCI"/> <service name="IRQ" /> </provides> <route> <service name="PCI"> <any-child /> </service> <any-service> <parent/> <any-child /> </any-service> </route> </start> <start name="ahci"> <binary name="ahci" /> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <service name="IRQ"><child name="acpi" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="part_blk"> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <any-service><child name="ahci"/> <parent/><any-child/></any-service> </route> <config> <policy label="blk_cache" partition="6"/> </config> </start> <start name="blk_cache"> <resource name="RAM" quantum="8M" /> <provides><service name="Block" /></provides> <route> <service name="Block"><child name="part_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="rump_fs"> <resource name="RAM" quantum="4M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="blk_cache" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="test-libc_vfs"> <resource name="RAM" quantum="4M"/> <config> <libc stdout="/dev/log"> <vfs> <dir name="dev"> <log/> </dir> <fs/> </vfs> </libc> </config> </start> </config>}
install_config $config
# # Boot modules #
# generic modules set boot_modules { core init timer test-libc_vfs ram_blk pci_drv pci_device_pd acpi_drv ahci part_blk blk_cache rump.lib.so rump_fs.lib.so rump_fs ld.lib.so libc.lib.so } #ext2.raw
build_boot_image $boot_modules
Hi,
i have still problems accessing a real harddisc.
I now started again using the rump_ext2 test. Is usd the run script below and get no result at all, it stops at [init -> acpi -> pci_drv] virtual void Genode::Platform_env::release(): used after freeing emergency=520192
If i replace <start name="rump_fs"> <resource name="RAM" quantum="8M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="part_blk" /></service>
with the original <start name="rump_fs"> <resource name="RAM" quantum="8M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="ram_blk" /></service> the test finishes.
Idf i use <start name="rump_fs"> <resource name="RAM" quantum="8M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="blk_cache ... instead (only pointing at the ram_blk) the run script stops in similiar manner.
What am i possibly doing wrong?
Best regards, Wolfgang
-------------------------------------------------------------------------------------------- # # Check used commands # set mke2fs [check_installed mke2fs] set dd [check_installed dd]
# # Build # set build_components { core init drivers/timer server/ram_blk server/blk_cache server/rump_fs test/libc_vfs drivers/pci drivers/acpi drivers/ahci server/part_blk }
build $build_components
# # Build EXT2-file-system image # catch { exec $dd if=/dev/zero of=bin/ext2.raw bs=1M count=16 } catch { exec $mke2fs -F bin/ext2.raw }
create_boot_directory
# # Generate config # append config { <config> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> <service name="SIGNAL" /> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="acpi"> <resource name="RAM" quantum="6M"/> <binary name="acpi_drv"/> <provides> <service name="PCI"/> <service name="IRQ" /> </provides> <route> <service name="PCI"> <any-child /> </service> <any-service> <parent/> <any-child /> </any-service> </route> </start> <start name="ahci"> <binary name="ahci" /> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <service name="IRQ"><child name="acpi" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="part_blk"> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <any-service><child name="ahci"/> <parent/><any-child/></any-service> </route> <config> <policy label="rump_fs" partition="7"/> </config> </start>
<start name="ram_blk"> <resource name="RAM" quantum="20M"/> <provides><service name="Block"/></provides> <config file="ext2.raw" block_size="512"/> </start>
<start name="blk_cache"> <resource name="RAM" quantum="20M" /> <provides><service name="Block" /></provides> <route> <service name="Block"><child name="ram_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="rump_fs"> <resource name="RAM" quantum="8M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="part_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="test-libc_vfs"> <resource name="RAM" quantum="4M"/> <config> <libc stdout="/dev/log"> <vfs> <dir name="dev"> <log/> </dir> <fs/> </vfs> </libc> </config> </start> </config>}
install_config $config
# # Boot modules #
# generic modules set boot_modules { core init timer test-libc_vfs ram_blk pci_drv pci_device_pd acpi_drv ahci part_blk blk_cache rump.lib.so rump_fs.lib.so rump_fs ld.lib.so ext2.raw libc.lib.so }
build_boot_image $boot_modules
append qemu_args " -m 256 -nographic"
run_genode_until {.*child exited with exit value 0.*} 60
exec rm -f bin/ext2.raw puts "\nTest succeeded\n"
------------------------------------------------------------------------------------- # # Check used commands # set mke2fs [check_installed mke2fs] set dd [check_installed dd]
# # Build # set build_components { core init drivers/timer server/ram_blk server/blk_cache server/rump_fs test/libc_vfs drivers/pci drivers/acpi drivers/ahci server/part_blk }
build $build_components
# # Build EXT2-file-system image # catch { exec $dd if=/dev/zero of=bin/ext2.raw bs=1M count=16 } catch { exec $mke2fs -F bin/ext2.raw }
create_boot_directory
# # Generate config # append config { <config> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> <service name="SIGNAL" /> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="acpi"> <resource name="RAM" quantum="6M"/> <binary name="acpi_drv"/> <provides> <service name="PCI"/> <service name="IRQ" /> </provides> <route> <service name="PCI"> <any-child /> </service> <any-service> <parent/> <any-child /> </any-service> </route> </start> <start name="ahci"> <binary name="ahci" /> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <service name="IRQ"><child name="acpi" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="part_blk"> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <any-service><child name="ahci"/> <parent/><any-child/></any-service> </route> <config> <policy label="rump_fs" partition="7"/> </config> </start>
<start name="ram_blk"> <resource name="RAM" quantum="20M"/> <provides><service name="Block"/></provides> <config file="ext2.raw" block_size="512"/> </start>
<start name="blk_cache"> <resource name="RAM" quantum="20M" /> <provides><service name="Block" /></provides> <route> <service name="Block"><child name="ram_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="rump_fs"> <resource name="RAM" quantum="8M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="part_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="test-libc_vfs"> <resource name="RAM" quantum="4M"/> <config> <libc stdout="/dev/log"> <vfs> <dir name="dev"> <log/> </dir> <fs/> </vfs> </libc> </config> </start> </config>}
install_config $config
# # Boot modules #
# generic modules set boot_modules { core init timer test-libc_vfs ram_blk pci_drv pci_device_pd acpi_drv ahci part_blk blk_cache rump.lib.so rump_fs.lib.so rump_fs ld.lib.so ext2.raw libc.lib.so }
build_boot_image $boot_modules
append qemu_args " -m 256 -nographic"
run_genode_until {.*child exited with exit value 0.*} 60
exec rm -f bin/ext2.raw puts "\nTest succeeded\n" ------------------------------------------------------------------------------------- # # Check used commands # set mke2fs [check_installed mke2fs] set dd [check_installed dd]
# # Build # set build_components { core init drivers/timer server/ram_blk server/blk_cache server/rump_fs test/libc_vfs drivers/pci drivers/acpi drivers/ahci server/part_blk }
build $build_components
# # Build EXT2-file-system image # catch { exec $dd if=/dev/zero of=bin/ext2.raw bs=1M count=16 } catch { exec $mke2fs -F bin/ext2.raw }
create_boot_directory
# # Generate config # append config { <config> <parent-provides> <service name="ROM"/> <service name="RAM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="CAP"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> <service name="SIGNAL" /> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start> <start name="acpi"> <resource name="RAM" quantum="6M"/> <binary name="acpi_drv"/> <provides> <service name="PCI"/> <service name="IRQ" /> </provides> <route> <service name="PCI"> <any-child /> </service> <any-service> <parent/> <any-child /> </any-service> </route> </start> <start name="ahci"> <binary name="ahci" /> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <service name="IRQ"><child name="acpi" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="part_blk"> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <any-service><child name="ahci"/> <parent/><any-child/></any-service> </route> <config> <policy label="rump_fs" partition="7"/> </config> </start>
<start name="ram_blk"> <resource name="RAM" quantum="20M"/> <provides><service name="Block"/></provides> <config file="ext2.raw" block_size="512"/> </start>
<start name="blk_cache"> <resource name="RAM" quantum="20M" /> <provides><service name="Block" /></provides> <route> <service name="Block"><child name="ram_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="rump_fs"> <resource name="RAM" quantum="8M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="part_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="test-libc_vfs"> <resource name="RAM" quantum="4M"/> <config> <libc stdout="/dev/log"> <vfs> <dir name="dev"> <log/> </dir> <fs/> </vfs> </libc> </config> </start> </config>}
install_config $config
# # Boot modules #
# generic modules set boot_modules { core init timer test-libc_vfs ram_blk pci_drv pci_device_pd acpi_drv ahci part_blk blk_cache rump.lib.so rump_fs.lib.so rump_fs ld.lib.so ext2.raw libc.lib.so }
build_boot_image $boot_modules
append qemu_args " -m 256 -nographic"
run_genode_until {.*child exited with exit value 0.*} 60
exec rm -f bin/ext2.raw puts "\nTest succeeded\n" ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- $ RUN_OPT="--target amt" make run/da2 using run script /var/lib/tftpboot/genode/repos/base-nova/run/env using run script /var/lib/tftpboot/genode_cc/genode/repos/file_cc/run/da2.run building targets: core init drivers/timer server/ram_blk server/blk_cache server/rump_fs test/libc_vfs drivers/pci drivers/acpi drivers/ahci server/part_blk spawn make core init drivers/timer server/ram_blk server/blk_cache server/rump_fs test/libc_vfs drivers/pci drivers/acpi drivers/ahci server/part_blk make[1]: Betrete Verzeichnis '/var/lib/tftpboot/genode/build/nova_x86_64' checking library dependencies... Skip target drivers/ahci/exynos5/bench because it requires exynos5 Library platform Library cxx Library syscall Library startup Library base-common Library base Program drivers/acpi/x86/acpi_drv Library ahci Library server Program drivers/ahci/ahci Program drivers/pci/device_pd/pci_device_pd Library config Program drivers/pci/x86/pci_drv Library alarm Library timer Program drivers/timer/timer Library init_pd_args Program init/init Program server/blk_cache/blk_cache Program server/part_blk/part_blk Program server/ram_blk/ram_blk Library ldso-startup Library timed_semaphore Library ldso-arch Library ld Library rump Library rump_fs Program server/rump_fs/rump_fs Library libc-string Library libc-locale Library libc-stdlib Library libc-stdio Library libc-gen Library libc-gdtoa Library libc-inet Library libc-stdtime Library libc-regex Library libc-compat Library libc-setjmp Library libc Program test/libc_vfs/test-libc_vfs Program core/core COMPILE version.o LINK core make[1]: Verlasse Verzeichnis '/var/lib/tftpboot/genode/build/nova_x86_64' genode build completed using NOVA kernel at /var/lib/tftpboot/genode/build/nova_x86_64/kernel/hypervisor creating ISO image... Warning: -follow-links does not always work correctly; be careful. Size of boot image is 4 sectors -> No emulation 36.21% done, estimate finish Sun Jul 6 17:46:22 2014 72.25% done, estimate finish Sun Jul 6 17:46:22 2014 Total translation table size: 2048 Total rockridge attributes bytes: 3197 Total directory bytes: 10240 Path table size(bytes): 64 Max brk space used 1e000 13851 extents written (27 MB) Deleting tftpboot/nova/var. Creating tftpboot/nova/var. Created tftpboot/nova/var. spawn amttool 10.1.1.2 reset host x201me., reset [y/N] ? y execute: reset result: pt_status: successspawn amtterm -u admin -p Test4$$3 -v 10.1.1.2 amtterm: NONE -> CONNECT (connection to host) ipv4 10.1.1.2 [10.1.1.2] 16994 open amtterm: CONNECT -> INIT (redirection initialization) amtterm: INIT -> AUTH (session authentication) amtterm: AUTH -> INIT_SOL (serial-over-lan initialization) amtterm: INIT_SOL -> RUN_SOL (serial-over-lan active) serial-over-lan redirection ok connected now, use ^] to escape Hello World. Need 01a7e000 bytes to relocate modules. Relocating to b97fe000: Copying 993216 bytes... Copying 16777216 bytes... Copying 655896 bytes... Copying 177232 bytes... Copying 1622096 bytes... Copying 1799640 bytes... Copying 421880 bytes... Copying 404008 bytes... Copying 421464 bytes... Copying 474848 bytes... Copying 346896 bytes... Copying 459184 bytes... Copying 415288 bytes... Copying 56816 bytes... Copying 384360 bytes... Copying 436496 bytes... Copying 2372 bytes... Copying 833016 bytes... Copying 1055709 bytes...
NOVA Microhypervisor v6-ca98273 (x86_64): Jun 29 2014 21:31:13 [gcc 4.7.2]
[ 0] CORE:0:0:0 6:25:5:4 [3] Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz [ 2] CORE:0:2:0 6:25:5:4 [3] Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz [ 1] CORE:0:0:1 6:25:5:4 [3] Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz [ 3] CORE:0:2:1 6:25:5:4 [3] Intel(R) Core(TM) i5 CPU M 520 @ 2.40GHz [ 0] DMAR:0xffffffff81021078 FRR:0 FR:0x5 BDF:0:2:0 FI:0xffffff000 Hypervisor features VMX Hypervisor does not feature SVM Hypervisor reports 4x1 CPUs - boot CPU is 0 Hypervisor info page contains 56 memory descriptors: detected physical memory: 0x0000000000000000 - size: 0x89400 use physical memory: 0x0000000000000000 - size: 0x89000 detected physical memory: 0x0000000000100000 - size: 0xbb17c000 use physical memory: 0x0000000000100000 - size: 0xbb17c000 detected physical memory: 0x00000000bb282000 - size: 0xdd000 use physical memory: 0x00000000bb282000 - size: 0xdd000 detected physical memory: 0x00000000bb40f000 - size: 0x60000 use physical memory: 0x00000000bb40f000 - size: 0x60000 detected physical memory: 0x00000000bb70f000 - size: 0x8000 use physical memory: 0x00000000bb70f000 - size: 0x8000 detected physical memory: 0x00000000bb71f000 - size: 0x4c000 use physical memory: 0x00000000bb71f000 - size: 0x4c000 detected physical memory: 0x00000000bb7ff000 - size: 0x1000 use physical memory: 0x00000000bb7ff000 - size: 0x1000 detected physical memory: 0x0000000100000000 - size: 0x38000000 use physical memory: 0x0000000100000000 - size: 0x38000000 map multi-boot module: physical 0xb9900000 -> [0x001cb000-0x002965f8) - core map multi-boot module: physical 0xb99cc000 -> [0x00002000-0x00002944) - config map multi-boot module: physical 0xb99cd000 -> [0x00006000-0x00070910) - init map multi-boot module: physical 0xb9a38000 -> [0x00074000-0x000d1d68) - timer map multi-boot module: physical 0xb9a96000 -> [0x000d5000-0x000e2df0) - test-libc_vfs map multi-boot module: physical 0xb9aa4000 -> [0xb0000000-0xb0065638) - ram_blk map multi-boot module: physical 0xb9b0a000 -> [0x0029a000-0x0030a1b0) - pci_drv map multi-boot module: physical 0xb9b7b000 -> [0x0030c000-0x00360b10) - pci_device_pd map multi-boot module: physical 0xb9bd0000 -> [0x00362000-0x003d5ee0) - acpi_drv map multi-boot module: physical 0xb9c44000 -> [0x003d7000-0x0043de58) - ahci map multi-boot module: physical 0xb9cab000 -> [0x0043f000-0x004a1a28) - part_blk map multi-boot module: physical 0xb9d0e000 -> [0x004a3000-0x00509ff8) - blk_cache map multi-boot module: physical 0xb9d76000 -> [0x0050b000-0x006c25d8) - rump.lib.so map multi-boot module: physical 0xb9f2e000 -> [0x006c4000-0x00850050) - rump_fs.lib.so map multi-boot module: physical 0xba0bb000 -> [0x00852000-0x0087d450) - rump_fs map multi-boot module: physical 0xba0e7000 -> [0x0087f000-0x0091f218) - ld.lib.so map multi-boot module: physical 0xba188000 -> [0x00921000-0x01921000) - ext2.raw map multi-boot module: physical 0xbb189000 -> [0x01921000-0x01a137c0) - libc.lib.so :virt_alloc: Allocator 18b130 dump: Block: [00002000,00004000) size=00002000 avail=00000000 max_avail=00000000 Block: [00004000,00005000) size=00001000 avail=00000000 max_avail=00000000 Block: [00005000,00006000) size=00001000 avail=00000000 max_avail=00000000 Block: [00006000,00072000) size=0006c000 avail=00000000 max_avail=00000000 Block: [00072000,00073000) size=00001000 avail=00000000 max_avail=00000000 Block: [00073000,00074000) size=00001000 avail=00000000 max_avail=00000000 Block: [00074000,000d3000) size=0005f000 avail=00000000 max_avail=00000000 Block: [000d3000,000d4000) size=00001000 avail=00000000 max_avail=00000000 Block: [000d4000,000d5000) size=00001000 avail=00000000 max_avail=00000000 Block: [000d5000,000e4000) size=0000f000 avail=00000000 max_avail=00000000 Block: [000e4000,000e5000) size=00001000 avail=00000000 max_avail=00000000 Block: [000e5000,000e6000) size=00001000 avail=00000000 max_avail=00000000 Block: [000e6000,000e7000) size=00001000 avail=00000000 max_avail=00000000 Block: [000e7000,000e8000) size=00001000 avail=00000000 max_avail=00000000 Block: [000e8000,000e9000) size=00001000 avail=00000000 max_avail=7fff400f8000 Block: [000e9000,000ea000) size=00001000 avail=00000000 max_avail=00000000 Block: [000ea000,000eb000) size=00001000 avail=00000000 max_avail=00000000 Block: [000eb000,000ec000) size=00001000 avail=00000000 max_avail=00000000 Block: [000ec000,000ed000) size=00001000 avail=00000000 max_avail=00000000 Block: [000ed000,000ee000) size=00001000 avail=00000000 max_avail=00000000 Block: [000ee000,000ef000) size=00001000 avail=00000000 max_avail=00000000 Block: [000ef000,000f0000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f0000,000f1000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f1000,000f2000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f2000,000f3000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f3000,000f4000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f4000,000f5000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f5000,000f6000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f6000,000f7000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f7000,000f8000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f8000,000f9000) size=00001000 avail=00000000 max_avail=00000000 Block: [000f9000,000fa000) size=00001000 avail=00000000 max_avail=00000000 Block: [000fa000,000fb000) size=00001000 avail=00000000 max_avail=00000000 Block: [000fb000,000fc000) size=00001000 avail=00000000 max_avail=00000000 Block: [000fc000,000fd000) size=00001000 avail=00000000 max_avail=00000000 Block: [000fd000,000ff000) size=00002000 avail=00000000 max_avail=00000000 Block: [000ff000,00100000) size=00001000 avail=00000000 max_avail=00000000 Block: [001cb000,00298000) size=000cd000 avail=00000000 max_avail=00000000 Block: [00298000,00299000) size=00001000 avail=00000000 max_avail=7fff400f8000 Block: [00299000,0029a000) size=00001000 avail=00000000 max_avail=00000000 Block: [0029a000,0030c000) size=00072000 avail=00000000 max_avail=00000000 Block: [0030c000,00362000) size=00056000 avail=00000000 max_avail=00000000 Block: [00362000,003d7000) size=00075000 avail=00000000 max_avail=00000000 Block: [003d7000,0043f000) size=00068000 avail=00000000 max_avail=00000000 Block: [0043f000,004a3000) size=00064000 avail=00000000 max_avail=00000000 Block: [004a3000,0050b000) size=00068000 avail=00000000 max_avail=00000000 Block: [0050b000,006c4000) size=001b9000 avail=00000000 max_avail=00000000 Block: [006c4000,00852000) size=0018e000 avail=00000000 max_avail=00000000 Block: [00852000,0087f000) size=0002d000 avail=00000000 max_avail=00000000 Block: [0087f000,00921000) size=000a2000 avail=00000000 max_avail=00000000 Block: [00921000,01921000) size=01000000 avail=00000000 max_avail=7fff400f8000 Block: [01921000,01a15000) size=000f4000 avail=00000000 max_avail=00000000 Block: [01a15000,01a16000) size=00001000 avail=00000000 max_avail=9e5e8000 Block: [01a16000,01a17000) size=00001000 avail=00000000 max_avail=00000000 Block: [01a17000,01a18000) size=00001000 avail=00000000 max_avail=9e5e8000 Block: [01a18000,a0000000) size=9e5e8000 avail=9e5e8000 max_avail=9e5e8000 Block: [b0000000,b0067000) size=00067000 avail=00000000 max_avail=7fff400f8000 Block: [b0067000,bfeff000) size=0fe98000 avail=0fe98000 max_avail=7fff400f8000 Block: [bff04000,7fffffffc000) size=7fff400f8000 avail=7fff400f8000 max_avail=7fff400f8000 => mem_size=140737219043328 (134217471 MB) / mem_avail=140737192099840 (134217445 MB) :phys_alloc: Allocator 18a080 dump: Block: [00001000,00089000) size=00088000 avail=00088000 max_avail=00088000 Block: [00100000,00400000) size=00300000 avail=00300000 max_avail=00300000 Block: [02800000,b9900000) size=b7100000 avail=b7100000 max_avail=b7100000 Block: [bb282000,bb283000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb283000,bb35f000) size=000dc000 avail=000dc000 max_avail=000dc000 Block: [bb40f000,bb410000) size=00001000 avail=00000000 max_avail=b7100000 Block: [bb410000,bb411000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb411000,bb412000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb412000,bb413000) size=00001000 avail=00000000 max_avail=b7100000 Block: [bb413000,bb414000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb414000,bb415000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb415000,bb416000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb416000,bb417000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb417000,bb418000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb418000,bb419000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb419000,bb41a000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb41a000,bb41b000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb41b000,bb41c000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb41c000,bb41d000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb41d000,bb41e000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb41e000,bb41f000) size=00001000 avail=00000000 max_avail=b7100000 Block: [bb41f000,bb420000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb420000,bb421000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb421000,bb422000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb422000,bb423000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb423000,bb424000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb424000,bb425000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb425000,bb426000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb426000,bb427000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb427000,bb428000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb428000,bb429000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb429000,bb42a000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb42a000,bb42b000) size=00001000 avail=00000000 max_avail=38000000 Block: [bb42b000,bb42c000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb42c000,bb42d000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb42d000,bb42e000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb42e000,bb42f000) size=00001000 avail=00000000 max_avail=0003e000 Block: [bb42f000,bb430000) size=00001000 avail=00000000 max_avail=00000000 Block: [bb430000,bb431000) size=00001000 avail=00000000 max_avail=0003e000 Block: [bb431000,bb46f000) size=0003e000 avail=0003e000 max_avail=0003e000 Block: [bb70f000,bb710000) size=00001000 avail=00000000 max_avail=38000000 Block: [bb710000,bb717000) size=00007000 avail=00007000 max_avail=00007000 Block: [bb71f000,bb720000) size=00001000 avail=00000000 max_avail=38000000 Block: [bb720000,bb76b000) size=0004b000 avail=0004b000 max_avail=0004b000 Block: [bb7ff000,bb800000) size=00001000 avail=00001000 max_avail=38000000 Block: [100000000,138000000) size=38000000 avail=38000000 max_avail=38000000 => mem_size=4016152576 (3830 MB) / mem_avail=4016001024 (3829 MB) :io_mem_alloc: Allocator 18c1f8 dump: Block: [00000000,00001000) size=00001000 avail=00001000 max_avail=00001000 Block: [00089000,00100000) size=00077000 avail=00077000 max_avail=00077000 Block: [00400000,02800000) size=02400000 avail=02400000 max_avail=02400000 Block: [b9900000,b9d75000) size=00475000 avail=00475000 max_avail=00475000 Block: [b9d76000,bb188000) size=01412000 avail=01412000 max_avail=02400000 Block: [bb189000,bb282000) size=000f9000 avail=000f9000 max_avail=000f9000 Block: [bb35f000,bb40f000) size=000b0000 avail=000b0000 max_avail=000f9000 Block: [bb46f000,bb70f000) size=002a0000 avail=002a0000 max_avail=fffffffec7fff000 Block: [bb717000,bb71f000) size=00008000 avail=00008000 max_avail=00008000 Block: [bb76b000,bb7ff000) size=00094000 avail=00094000 max_avail=fffffffec7fff000 Block: [bb800000,100000000) size=44800000 avail=44800000 max_avail=fffffffec7fff000 Block: [138000000,fffffffffffff000) size=fffffffec7fff000 avail=fffffffec7fff000 max_avail=fffffffec7fff000 => mem_size=18446744069693386752 (17592186040585 MB) / mem_avail=18446744069693386752 (17592186040585 MB) Genode 14.05 int main(): --- create local services --- int main(): --- start init --- int main(): transferred 3829 MB to init Quota exceeded! amount=24576, size=4096, consumed=24576 [init] upgrading quota donation for Env::CPU (8192 bytes) Quota exceeded! amount=32768, size=4096, consumed=32768 [init] upgrading quota donation for Env::CPU (8192 bytes) Quota exceeded! amount=40960, size=4096, consumed=40960 [init] upgrading quota donation for Env::CPU (8192 bytes) [init -> acpi] available memory for ACPI 2048 kiB, for PCI_DRV 3416 kiB [init -> ahci] --- AHCI driver started --- [init -> acpi] void Acpi_table::_parse_tables(T*, Genode::uint32_t) [with T = long unsigned int; Genode::uint32_t = unsigned int]: Found MADT [init -> rump_fs] Using ext2fs as file system [init -> rump_fs] int rumpuser_init(int, const rumpuser_hyperup*): RUMP ver: 17 [init -> acpi] MADT IRQ 0 -> GSI 2 flags: 0 [init -> acpi] MADT IRQ 9 -> GSI 9 flags: d [init -> acpi] void Acpi_table::_parse_tables(T*, Genode::uint32_t) [with T = long unsigned int; Genode::uint32_t = unsigned int]: Found MCFG [init -> acpi] MCFG BASE 0xe0000000 seg 00 bus 00-ff [init -> acpi] void Acpi_table::_parse_tables(T*, Genode::uint32_t) [with T = long unsigned int; Genode::uint32_t = unsigned int]: Found DMAR Quota exceeded! amount=8192, size=4096, consumed=8192 [init -> rump_fs] upgrading quota donation for SIGNAL session [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_THREADS [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_VERBOSE [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): _RUMPUSER_NCPU Quota exceeded! amount=12288, size=4096, consumed=12288 [init -> rump_fs] upgrading quota donation for SIGNAL session [init -> acpi] 36 bit DMA physical addressable [init -> acpi] RMRR: [0xbb6e9000,0xbb6fffff] - DMA region reported by BIOS [init -> acpi] RMRR: [0xbdc00000,0xbfffffff] - DMA region reported by BIOS [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_MEMLIMIT [init -> rump_fs] Asserting rump kernel 4044 KB of RAM Quota exceeded! amount=24576, size=4096, consumed=24576 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) Quota exceeded! amount=32768, size=4096, consumed=32768 [init -> acpi -> pci_drv] PCI driver started [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> rump_fs] BOOTSTRAP [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_NVNODES [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_BLKFAIL [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_BLKSECTSHIFT [init -> acpi -> pci_drv -> pci_device_pd] PCI device pd starting ... [init -> acpi -> pci_drv -> pci_device_pd] PCI device pd started [init -> acpi -> pci_drv] 00 BDF start 0, functions: 0x10000, physical base 0xe0000000 Quota exceeded! amount=40960, size=4096, consumed=40960 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) Quota exceeded! amount=49152, size=4096, consumed=49152 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> acpi] ACPI table format is supported - rewrite GSIs [init -> acpi] Rewriting 00:02.0 IRQ: 11 -> GSI: 16 [init -> acpi] Rewriting 00:16.0 IRQ: 11 -> GSI: 16 [init -> acpi] Rewriting 00:16.3 IRQ: 11 -> GSI: 17 [init -> acpi] Rewriting 00:19.0 IRQ: 11 -> GSI: 20 [init -> acpi] Rewriting 00:1a.0 IRQ: 11 -> GSI: 23 [init -> acpi] Rewriting 00:1b.0 IRQ: 11 -> GSI: 17 [init -> acpi] Rewriting 00:1d.0 IRQ: 11 -> GSI: 19 [init -> acpi] Rewriting 00:1f.2 IRQ: 11 -> GSI: 16 Quota exceeded! amount=61440, size=4096, consumed=61440 [init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes) [init -> acpi] Rewriting 00:1f.3 IRQ: 11 -> GSI: 23 [init -> acpi] Rewriting 00:1f.6 IRQ: 11 -> GSI: 19 [init -> acpi] Rewriting 02:00.0 IRQ: 11 -> GSI: 16 [init -> ahci] Found AHCI HBA (Vendor ID: 8086 Device ID: 3b2f Class: 00010601) [init -> ahci] Port 0: ATAPI no [init -> ahci] Port 0: Detected interface is active [init -> ahci] AHCI Version: 1.0300 Quota exceeded! amount=57344, size=4096, consumed=57344 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): RUMP_MODULEBASE Quota exceeded! amount=69632, size=4096, consumed=69632 [init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes) Quota exceeded! amount=65536, size=4096, consumed=65536 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> ahci] CAPs: [init -> ahci] Port count: 6 [init -> ahci] Command slots: 32 [init -> ahci] AHCI only: no [init -> ahci] Native command queuing: yes [init -> ahci] 64 Bit: yes Quota exceeded! amount=77824, size=4096, consumed=77824 [init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes) Quota exceeded! amount=73728, size=4096, consumed=73728 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) [init -> rump_fs] int rumpuser_getparam(const char*, void*, size_t): _RUMPUSER_HOSTNAME Quota exceeded! amount=86016, size=4096, consumed=86016 [init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes) Quota exceeded! amount=81920, size=4096, consumed=81920 [init -> rump_fs] upgrading quota donation for Env::CPU (8192 bytes) int main(): --- init created, waiting for exit condition --- [init -> acpi -> pci_drv] resource_request: ram_quota=4198400 [init -> acpi -> pci_drv] virtual void Genode::Platform_env::release(): used before freeing emergency=524288 [init -> acpi -> pci_drv] virtual void Genode::Platform_env::release(): used after freeing emergency=520192 Error: Test execution timed out make: *** [run/da2] Fehler 254
------------------------------------------------------------------------------- changed to block cache:
Quota exceeded! amount=8192, size=4096, consumed=8192 [init -> ram_blk] upgrading quota donation for SIGNAL session [init -> ahci] CAPs: [init -> ahci] Port count: 6 [init -> ahci] Command slots: 32 [init -> ahci] AHCI only: no [init -> ahci] Native command queuing: yes [init -> ahci] 64 Bit: yes Quota exceeded! amount=12288, size=4096, consumed=12288 [init -> ram_blk] upgrading quota donation for SIGNAL session Quota exceeded! amount=8192, size=4096, consumed=8192 [init -> blk_cache] upgrading quota donation for SIGNAL session Quota exceeded! amount=12288, size=4096, consumed=12288 [init -> blk_cache] upgrading quota donation for SIGNAL session Quota exceeded! amount=16384, size=4096, consumed=16384 [init -> blk_cache] upgrading quota donation for SIGNAL session Quota exceeded! amount=20480, size=4096, consumed=20480 [init -> blk_cache] upgrading quota donation for SIGNAL session Quota exceeded! amount=24576, size=4096, consumed=24576 [init -> blk_cache] upgrading quota donation for SIGNAL session Quota exceeded! amount=16384, size=4096, consumed=16384 [init -> rump_fs] upgrading quota donation for SIGNAL session Quota exceeded! amount=20480, size=4096, consumed=20480 [init -> rump_fs] upgrading quota donation for SIGNAL session [init -> rump_fs] Backend::Backend(): Backend blk_size 512 int main(): --- init created, waiting for exit condition --- [init -> acpi -> pci_drv] resource_request: ram_quota=4198400 [init -> acpi -> pci_drv] virtual void Genode::Platform_env::release(): used before freeing emergency=524288 [init -> acpi -> pci_drv] virtual void Genode::Platform_env::release(): used after freeing emergency=520192 Error: Test execution timed out make: *** [run/da2] Fehler 254
Hello Wolfgang,
On 06.07.2014 18:01, w_schmidt@...181... wrote:
Hi,
i have still problems accessing a real harddisc.
I now started again using the rump_ext2 test. Is usd the run script below and get no result at all, it stops at [init -> acpi -> pci_drv] virtual void Genode::Platform_env::release(): used after freeing emergency=520192
I've seen this symptom, too, recently, and it seems that the RAM quota upgrade request of the PCI driver is not handled correctly. As a workaround, can you try giving the ACPI driver more RAM quota?
Christian
Hi,
thanks, the workaround works (i used 128M now for ACPI - the script now finds the drive.
3 new questions now arise - 1. With which part of the output do I know that the RAM quota is insufficent? - 2. If i try to use the blk_cache still the "[init -> rump_fs] Backend::Backend(): Backend blk_size 512" comes up - 3. The partition scheme seems somehow wrong. The following output is shown [init -> part_blk] Partition 1: LBA 2048 (61440 blocks) type: 7 [init -> part_blk] Partition 2: LBA 63488 (167069696 blocks) type: 7 [init -> part_blk] Partition 3: LBA 238815230 (73764866 blocks) type: 5 [init -> part_blk] Partition 5: LBA 238815232 (1951744 blocks) type 83 [init -> part_blk] Partition 6: LBA 240769024 (3903488 blocks) type 83
I think the first 2 are Windows partitions - no problem. Partition 3 is a DOS partition`which i can't find on the system (?) Partitions 5 & 6 i find a bit odd, i think 83 are linux partitions.
If i use df -T i see /dev/sda9 -> / ext4 /dev/sda5 -> /boot ext2 /dev/sda6 -> /genodeTest1 ext2 /dev/sda7 -> /genodeTest2 ext2
With 7 i get a message that the partition is not found. With 6 /dev/sda6 seems to be used, with 5 sda5. Why can't i see sda7 onwards
Best regards, Wolfgang -----Ursprüngliche Nachricht----- From: Christian Prochaska Sent: Sunday, July 6, 2014 6:27 PM To: genode-main@lists.sourceforge.net Subject: Re: Using a real harddisk
Hello Wolfgang,
On 06.07.2014 18:01, w_schmidt@...181... wrote:
Hi,
i have still problems accessing a real harddisc.
I now started again using the rump_ext2 test. Is usd the run script below and get no result at all, it stops at [init -> acpi -> pci_drv] virtual void Genode::Platform_env::release(): used after freeing emergency=520192
I've seen this symptom, too, recently, and it seems that the RAM quota upgrade request of the PCI driver is not handled correctly. As a workaround, can you try giving the ACPI driver more RAM quota?
Christian
------------------------------------------------------------------------------ Open source business process management suite built on Java and Eclipse Turn processes into business applications with Bonita BPM Community Edition Quickly connect people, data, and systems into organized workflows Winner of BOSSIE, CODIE, OW2 and Gartner awards http://p.sf.net/sfu/Bonitasoft _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
Hi,
I have still the old problem with using the blk_cache and rump_fs (latest release 14.05). I tried to do the following: - have a larger blockcache which is used by part_blk - have multiple partitions and rump_fs (which is working) which nearly no cache and which shoudl threfore use the blockcache (which is not working)
I shortened the configuration below to the relevant(hopefully) part with only one partinion.
If I use the configuration 1 i can read / write a file on the system. With configuration 2 the system seems to stop without any further information. (same result with config 3) [init -> rump_fs] upgrading quota donation for SIGNAL session [init -> rump_fs] Backend::Backend(): Backend blk_size 512 [init -> rump_fs] rump: /genode: file system not clean; please fsck(8) -execution seems to stop here-
The "file system not clean" seems not to be the relevant part, it is also shown if the program steps through. (with config 1 [init -> rump_fs] upgrading quota donation for SIGNAL session Quota exceeded! amount=20480, size=4096, consumed=20480 [init -> rump_fs] upgrading quota donation for SIGNAL session [init -> rump_fs] Backend::Backend(): Backend blk_size 512 [init -> rump_fs] rump: /genode: file system not clean; please fsck(8) Quota exceeded! amount=24576, size=4096, consumed=24576 [init -> rump_fs] upgrading quota donation for SIGNAL session Quota exceeded! amount=94208, size=4096, consumed=94208 [init -> rump_fs] upgrading quota donation for Env::RM (8192 bytes) Quota exceeded! amount=28672, size=4096, consumed=28672 [init -> rump_fs] upgrading quota donation for SIGNAL session ... and so on until file is read/written )
What am i possibly doing wrong?
Best regards, Wolfgang
---------------------------------------------------------------------------------------------------------- Config 1 (part)
<start name="ahci"> <binary name="ahci" /> <resource name="RAM" quantum="10M" /> <provides><service name="Block" /></provides> <route> <service name="IRQ"><child name="acpi" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> <start name="part_blk"> <resource name="RAM" quantum="18M" /> <provides><service name="Block" /></provides> <route> <any-service><child name="ahci"/> <parent/><any-child/></any-service> </route> <config> <policy label="rump_fs" partition="5"/> </config> </start> <start name="rump_fs"> <resource name="RAM" quantum="42M" /> <provides><service name="File_system"/></provides> <config fs="ext2fs"><policy label="" root="/" writeable="yes"/></config> <route> <service name="Block"><child name="part_blk" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start> ------------------------------------------------------------------------------------------------- Config 2: <start name="ahci"> unchanged .. </start> <start name="blk_cache"> <resource name="RAM" quantum="18M" /> <provides><service name="Block" /></provides> <route> <any-service><child name="ahci"/> <parent/><any-child/></any-service> </route> </start> <start name="part_blk"> <resource name="RAM" quantum="18M" /> <provides><service name="Block" /></provides> <route> <any-service><child name="blk_cache"/> <parent/><any-child/></any-service> </route> <config> <policy label="rump_fs" partition="5"/> </config> </start> <start name="rump_fs"> unchanged ... ------------------------------------------
Config 3 <start name="blk_cache"> <resource name="RAM" quantum="18M" /> <provides><service name="Block" /></provides> <route> <service name="Block"><child name="ahci" /></service> <any-service> <parent /> <any-child /></any-service> </route> </start>