l4linux with ide-harddisk

Adam Lackorzynski adam at os.inf.tu-dresden.de
Sat Aug 10 23:20:06 CEST 2013


Hi,

On Wed Aug 07, 2013 at 15:11:50 +0200, Rudolf Weber wrote:
> I prepared a 32 bit ubuntu system on a virtualbox and replaced the linux - Kernel through the 
> l4re-snapshot-2013060718 - L4Linux-mag-x86 Konfiguration.
>  
> First I made a disk and add it to the vm and I could mount it !

You mounted it while booting from the ramdisk?

> I wonder ( see later).
>  
> Now I configured the Ubuntu-Linux-Root-Disk as /dev/hda and:
> ...
> piix 0000:00:03.0: IDE controller (0x8086:0x7111 rev 0x01)
> pci 0000:00:03.0: No interrupt pin configured for device 0000:00:03.0
> piix 0000:00:03.0: not 100% native mode: will probe irqs later
>     ide0: BM-DMA at 0xd000-0xd007
>     ide1: BM-DMA at 0xd008-0xd00f
> hdc: VBOX CD-ROM, ATAPI CD/DVD-ROM drive
> hdc: UDMA/33 mode selected
> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
> ESC[37mio      | ERROR: binding irq 15, result is -1 (Operation not permitted)
> ESC[0m
> ESC[33ml4linux | Bind irq to icu failed with -1ESC[0m
> l4x-irq: Did not get IRQ 15 from IO service
>  
>  
> ==> I think, the interupt is not delegated from the IO-Server to l4linux 
> My understanding is, that the io-Server manage all interrupts,ioports.
> But why I could mount a disk ?
> 
> I dont see a device in  x86-legacy.dev, so I add IDE0 and IDE1 (see attachment),
> and add a systembus 
>  
>  disks => new System_bus()
> {
>   IDE0 => wrap(hw-root.match("ide0"));
>   IDE1 => wrap(hw-root.match("ide1"));
> }
>  in 
>  l4lx-x86.io (see attachment)

Two issues here:
 - There's only one vbus per client (e.g. L4Linux), adding another one,
   and giving it to the client under another (unknown) name will not
   make the client use those devices.
 - The disk controller (and thus the disks) are already included in
   your l4linux vbus because of the specified PCI class.

> in the start-config l4lx-gfx.cfg the disks are granted to l4linux (see attachment)
> 
> As result, the output is
>  piix 0000:00:03.0: IDE controller (0x8086:0x7111 rev 0x01)
> pci 0000:00:03.0: No interrupt pin configured for device 0000:00:03.0
> piix 0000:00:03.0: not 100% native mode: will probe irqs later
>     ide0: BM-DMA at 0xd000-0xd007
>     ide1: BM-DMA at 0xd008-0xd00f
> hda: VBOX HARDDISK, ATA DISK drive
> hda: UDMA/33 mode selected
> hdc: VBOX CD-ROM, ATAPI CD/DVD-ROM drive
> Switching to clocksource tsc
> hdc: UDMA/33 mode selected
> ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
> ESC[33ml4linux | Bind irq to icu failed with -1ESC[0m
> l4x-irq: Did not get IRQ 15 from IO service
> ------------[ cut here ]------------
> WARNING: at /home/rw/l4exp/l4re-snapshot-2013060718/src/l4linux/arch/l4/l4lxlib/
> l4env/irq_vcpu.c:106 l4lx_irq_dev_startup+0x17a/0x180()
> Modules linked in:
> Pid: 1, comm: swapper Not tainted 3.9.0-l4 #1
> Call Trace:
> 
> -> the ERROR "ERROR: binding irq 15, result is -1 (Operation not permitted)" 
> don't appear,
> but the result is the same.
> 
> The current output of the serialine is in l4ubuntu.1
> 
> The l4-linux I configured with PCI/VPCI see attatchment x86_rw_config like in my last E-mails.
> 
> Summary:
>    * How to grant the ide-Controllers to l4linux ?
>    * Why l4Linux can't get the interrupt - what is wrong with my configuration ?

You should add -vvv (or more) to rom/io in the start script. Then you'll
see what has actually been put on each clients vbus. There we should see
more details.

>     HW-Question: How are the IDE-Controllers and the PCI related ?

An IDE controller is a PCI device, that's why scanning the PCI bus will
find it. The disk controller driver will then find the connected disks.



Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/




More information about the l4-hackers mailing list