# LILO bios mappings

## pakjebakmeel

Hi all,

I'm looking for some advise on how to proceed. I currently have:

Intel D2700MUD motherboard with 2 onboard SATA ports

Expansion Sil3132 card 2 port MiniPCIe SATA controller

```
gentoo rsync # lspci

00:00.0 Host bridge: Intel Corporation Atom Processor D2xxx/N2xxx DRAM Controller (rev 03)

00:02.0 VGA compatible controller: Intel Corporation Atom Processor D2xxx/N2xxx Integrated Graphics Controller (rev 09)

00:1c.0 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 1 (rev 02)

00:1c.2 PCI bridge: Intel Corporation NM10/ICH7 Family PCI Express Port 3 (rev 02)

00:1d.0 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #1 (rev 02)

00:1d.1 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #2 (rev 02)

00:1d.2 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #3 (rev 02)

00:1d.3 USB controller: Intel Corporation NM10/ICH7 Family USB UHCI Controller #4 (rev 02)

00:1d.7 USB controller: Intel Corporation NM10/ICH7 Family USB2 EHCI Controller (rev 02)

00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)

00:1f.0 ISA bridge: Intel Corporation NM10 Family LPC Controller (rev 02)

00:1f.2 SATA controller: Intel Corporation NM10/ICH7 Family SATA Controller [AHCI mode] (rev 02)

00:1f.3 SMBus: Intel Corporation NM10/ICH7 Family SMBus Controller (rev 02)

01:00.0 Ethernet controller: Intel Corporation 82574L Gigabit Network Connection

02:00.0 RAID bus controller: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller (rev 01)

03:00.0 Ethernet controller: Intel Corporation 82541PI Gigabit Ethernet Controller (rev 05)
```

Logical MDADM layout:

2x 2TB (MD1,MD2,MD3,MD4 / boot,swap,root,tempstorage) mdadm metadata v0.90 because I use kernel automounter and no initramfs

5x 3TB (MD5) mdadm metadata v1.20

```
gentoo rsync # mdadm --detail /dev/md5

/dev/md5:

        Version : 1.2

  Creation Time : Sat Jan  5 15:19:13 2013

     Raid Level : raid5

     Array Size : 11721054208 (11178.07 GiB 12002.36 GB)

  Used Dev Size : 2930263552 (2794.52 GiB 3000.59 GB)

   Raid Devices : 5

  Total Devices : 5

    Persistence : Superblock is persistent

    Update Time : Mon Feb 18 03:25:19 2013

          State : clean

 Active Devices : 5

Working Devices : 5

 Failed Devices : 0

  Spare Devices : 0

         Layout : left-symmetric

     Chunk Size : 512K

           Name : gentoo:0  (local to host gentoo)

           UUID : 7a13e258:2b8fbdc6:083a1953:634be985

         Events : 38406

    Number   Major   Minor   RaidDevice State

       0       8       65        0      active sync   /dev/sde1

       6       8       81        1      active sync   /dev/sdf1

       2       8       97        2      active sync   /dev/sdg1

       4       8       33        3      active sync   /dev/sdc1

       5       8       49        4      active sync   /dev/sdd1
```

```
gentoo rsync # mdadm --detail /dev/md1

/dev/md1:

        Version : 0.90

  Creation Time : Mon Jan  7 20:15:56 2013

     Raid Level : raid1

     Array Size : 124864 (121.96 MiB 127.86 MB)

  Used Dev Size : 124864 (121.96 MiB 127.86 MB)

   Raid Devices : 2

  Total Devices : 2

Preferred Minor : 1

    Persistence : Superblock is persistent

    Update Time : Mon Feb 18 09:31:41 2013

          State : clean

 Active Devices : 2

Working Devices : 2

 Failed Devices : 0

  Spare Devices : 0

           UUID : 3bd9364a:f7d81ce4:a65ff077:61ffda2d (local to host gentoo)

         Events : 0.24

    Number   Major   Minor   RaidDevice State

       0       8       17        0      active sync   /dev/sdb1

       1       8        1        1      active sync   /dev/sda1
```

```
gentoo rsync # mdadm --detail /dev/md2

/dev/md2:

        Version : 0.90

  Creation Time : Mon Jan  7 20:16:06 2013

     Raid Level : raid1

     Array Size : 3999680 (3.81 GiB 4.10 GB)

  Used Dev Size : 3999680 (3.81 GiB 4.10 GB)

   Raid Devices : 2

  Total Devices : 2

Preferred Minor : 2

    Persistence : Superblock is persistent

    Update Time : Mon Feb 18 09:31:41 2013

          State : clean

 Active Devices : 2

Working Devices : 2

 Failed Devices : 0

  Spare Devices : 0

           UUID : b2494a3c:3a6a30e4:a65ff077:61ffda2d (local to host gentoo)

         Events : 0.24

    Number   Major   Minor   RaidDevice State

       0       8       18        0      active sync   /dev/sdb2

       1       8        2        1      active sync   /dev/sda2
```

```
gentoo rsync # mdadm --detail /dev/md3

/dev/md3:

        Version : 0.90

  Creation Time : Mon Jan  7 20:16:15 2013

     Raid Level : raid1

     Array Size : 97656768 (93.13 GiB 100.00 GB)

  Used Dev Size : 97656768 (93.13 GiB 100.00 GB)

   Raid Devices : 2

  Total Devices : 2

Preferred Minor : 3

    Persistence : Superblock is persistent

    Update Time : Mon Feb 18 10:40:15 2013

          State : active

 Active Devices : 2

Working Devices : 2

 Failed Devices : 0

  Spare Devices : 0

           UUID : e7c1fab3:a11c0038:a65ff077:61ffda2d (local to host gentoo)

         Events : 0.39

    Number   Major   Minor   RaidDevice State

       0       8       19        0      active sync   /dev/sdb3

       1       8        3        1      active sync   /dev/sda3
```

```
gentoo rsync # mdadm --detail /dev/md4

/dev/md4:

        Version : 0.90

  Creation Time : Tue Jan  8 21:14:46 2013

     Raid Level : raid1

     Array Size : 1851731968 (1765.95 GiB 1896.17 GB)

  Used Dev Size : 1851731968 (1765.95 GiB 1896.17 GB)

   Raid Devices : 2

  Total Devices : 2

Preferred Minor : 4

    Persistence : Superblock is persistent

    Update Time : Mon Feb 18 09:31:41 2013

          State : clean

 Active Devices : 2

Working Devices : 2

 Failed Devices : 0

  Spare Devices : 0

           UUID : d72fa9ce:5b0075ef:a65ff077:61ffda2d (local to host gentoo)

         Events : 0.28

    Number   Major   Minor   RaidDevice State

       0       8        4        0      active sync   /dev/sda4

       1       8       20        1      active sync   /dev/sdb4
```

Physical layout as follows:

http://img843.imageshack.us/img843/9448/64655307.png

This works fine, both disks are bootable with the following LILO config:

```
boot=/dev/md1

raid-extra-boot=mbr-only

prompt

timeout=100

default=current

lba32

image=/boot/kernel-current

        label=current

        read-only

        root=/dev/md3

        vga=791

image=/boot/kernel-previous

        label=previous

        read-only

        root=/dev/md3

        vga=791
```

The problem I have is when I connect an additional disk, or move the port multiplier to the first port of the SIL3132 the system hangs on "LI" and does not boot. I have done some research and figured out that this is most likely due to the BIOS mappings (0x80, 0x81) etc.

I have found some tutorials that cover this problem but they do not take RAID1 into account. Also, I have no clue whether this happens because the BIOS enumerates the expansion card first and passed 0x80 for anything connected to port 1 of the sil3132 or because the linux kernel enumerates in a different order.

I'm looking for some advise on how to crack this problem. The goal is to have a bootable system with the port multiplier connected to port 1 of the sil3132, I can then attach a second port multiplier and add more disks.

The questions I have now;

When I add a disk on that port 1; does the BIOS assign 0x80 and LILO boots the wrong disk? Or does LILO/Kernel assisn a different ID whilst the bios just appends that disk at the end of the 0x8* range?

The port multiplier will only report 1 one disk to the BIOS, (stated in the manual). The one connected to the first port, when changing the disk mapping should I take into account it might inject 5 disks or just 1?

With these 2 questions in mind, how do I weave a solution into my lilo.conf keep RAID1 bootable from both disks? Any guidelines or advises?   :Confused: 

----------

## pakjebakmeel

Because the mainboard's bios doesn't have Port Multiplier support it will only report the disk connected to the first port of the multiplier. I can confirm that during POST the addon card BIOS shows 1 3TB disk attached to port 2. When I leave port 1 empty my system boots so my conclusion is that the bios does (can I confirm this with some tool during run-time?):

```
2TB on mainboard port 1 = 0x80 

2TB on mainboard port 2 = 0x81 

3TB on expansion card port 2,1 = 0x82 

3TB on expansion card port 2,2 = 0x83 

3TB on expansion card port 2,3 = 0x84 

3TB on expansion card port 2,4 = 0x85 

3TB on expansion card port 2,5 = 0x86
```

When I move my port multiplier to port 1 of the expansion card I would expect it to do this: 

```
2TB on mainboard port 1 = 0x80 

2TB on mainboard port 2 = 0x81 

3TB on expansion card port 1,1 = 0x82 

3TB on expansion card port 1,2 = 0x83 

3TB on expansion card port 1,3 = 0x84 

3TB on expansion card port 1,4 = 0x85 

3TB on expansion card port 1,5 = 0x86
```

But then the BIOS ID's for the boot disks haven't changed and it should still boot (which it doesn't) so something else has to be happening. Maybe the bios enumerates in the following order: 

```
Port 1 on the expansion card 

Port 1 on the mobo 

Port 2 on the mobo 

Port 2 on the expansion card
```

Sounds weird but it would explain the behaviour. The card does support RAID 0&1 but it's not used. Because it has a RAID bios it might interfere with the main BIOS's order? 

I suspect this is what happens if I connect an additional disk: 

```
Additional Disk on expansion card port 1,1 = 0x80 

2TB on mainboard port 1 = 0x81 

2TB on mainboard port 2 = 0x82 

3TB on expansion card port 2,1 = 0x83 

3TB on expansion card port 2,2 = 0x84 

3TB on expansion card port 2,3 = 0x85 

3TB on expansion card port 2,4 = 0x86 

3TB on expansion card port 2,5 = 0x87
```

I think it must 'stick' anything connected to the expansion card's port no 1 in between the mobo ports and expansion card's port no 2 enumeration order. 

In the BIOS I specify the boot drive as the 2TB and then the other 2TB which are both bootable by MBR so if the BIOS marks the boot drive as 0x80 it should just boot right? Merely connecting a seperate drive on that expansion card's port no 1 makes the system fail boot, so it must stick that drive on 0x80 for some reason? 

Does this all make sense or am I totally confused now?

----------

## NeddySeagoon

pakjebakmeel,

```
00:1f.2 SATA controller: Intel Corporation NM10/ICH7 Family SATA Controller [AHCI mode] (rev 02)

02:00.0 RAID bus controller: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller (rev 01) 
```

The kernel HDD scan order will be the Intel then the Silicon Image as the Intel is on PCI bus 00 and the Sil chip on PCI Bus 02.

Some BIOSes have an option to search plug in cards before the motherboard.  If yours has that option and its set, then adding a drive will change the two drives connected to the Intel controller BIOS IDs, which will in turn, upset lilo.  Moving drives around would not as the Intel chip set would still be enumerated last.

Check your BIOS for boot order and the external card option.

If you remove the SIL card, does you box still boot or do you get the LI  error?

----------

## pakjebakmeel

 *NeddySeagoon wrote:*   

> pakjebakmeel,
> 
> ```
> 00:1f.2 SATA controller: Intel Corporation NM10/ICH7 Family SATA Controller [AHCI mode] (rev 02)
> 
> ...

 

I can remove the port expander (and the 5 connected drives) and the box still boots. I ran without this expansion card for a while and when I added it the system booted fine so I guess it will still boot when I remove it. Can't test now as I currently don't have physical access to the box. When I move disks on the port multiplier it still boots (re-arranged SATA cables last week). Just when adding a disk to port 1 or moving the PM to port 1 on the SIL3132 it fails to boot.

So it must be a BIOS problem with the enumeration then as the kernel will detect the disks in the right order. I will check the BIOS this evening to see if I can find anything interesting.

----------

