Using a real harddisk
w_schmidt at ...181...
w_schmidt at ...181...
Sun Jun 15 18:22:36 CEST 2014
-----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 ---
More information about the users
mailing list