-----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 ---