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