Bug 1327060

Summary: [Seabios]Limited boot number supported for SCSI/SATA
Product: Red Hat Enterprise Linux 7 Reporter: aihua liang <aliang>
Component: seabiosAssignee: Gerd Hoffmann <kraxel>
Status: CLOSED ERRATA QA Contact: aihua liang <aliang>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 7.3CC: aliang, chayang, huding, jen, juzhang, knoel, meyang, ngu, pingl, sherold, shuang, virt-bugs, virt-maint, xutian
Target Milestone: rcKeywords: Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: seabios-1.9.1-3.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-11-04 00:28:20 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Attachments:
Description Flags
Limited boot num for scsi none

Description aihua liang 2016-04-14 07:57:16 UTC
Created attachment 1147064 [details]
Limited boot num for scsi

Description of problem:
 Limited boot number supported for SCSI/SATA.
 seabios-1.7.5-11.el7 don't have this problem.

Version-Release number of selected component (if applicable):
 kerner version:3.10.0-371.el7.x86_64
 qemu version:qemu-kvm-rhev-2.5.0-4.el7
 seabios version:seabios-1.9.1-2.el7


How reproducible:
100%


Steps to Reproduce:
1.Start VM with 52 scsi disks img, commands as bellow:
/usr/libexec/qemu-kvm \
-M pc \
-name rhel7.1-4 \
-machine pc,accel=kvm,usb=off,vmport=off \
-cpu SandyBridge \
-m 4096 \
-smp 8,sockets=8,cores=1,threads=1 \
-uuid 1534fa42-4818-4493-9f67-eee5ba758385 \
-nodefaults -nodefconfig -no-user-config \
-chardev socket,id=qmp_id_catch_monitor,path=/var/tmp/test1,server,nowait \
-mon chardev=qmp_id_catch_monitor,id=monitor,mode=control -no-hpet \
-boot menu=on,splash-time=10000 \
-device virtio-scsi-pci,id=scsi0,addr=0x5 \
-drive file=/tmp/test_kvm.img,if=none,id=drive-scsi-disk,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk,bus=scsi0.0,scsi-id=0,id=scsi-disk \
-drive file=/tmp/test1.img,if=none,id=drive-scsi-disk1,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk1,bus=scsi0.0,scsi-id=1,id=scsi-disk1 \
-drive file=/tmp/test2.img,if=none,id=drive-scsi-disk2,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk2,bus=scsi0.0,scsi-id=2,id=scsi-disk2 \
-drive file=/tmp/test3.img,if=none,id=drive-scsi-disk3,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk3,bus=scsi0.0,scsi-id=3,id=scsi-disk3 \
-drive file=/tmp/test4.img,if=none,id=drive-scsi-disk4,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk4,bus=scsi0.0,scsi-id=4,id=scsi-disk4 \
-drive file=/tmp/test5.img,if=none,id=drive-scsi-disk5,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk5,bus=scsi0.0,scsi-id=5,id=scsi-disk5 \
-drive file=/tmp/test6.img,if=none,id=drive-scsi-disk6,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk6,bus=scsi0.0,scsi-id=6,id=scsi-disk6 \
-drive file=/tmp/test7.img,if=none,id=drive-scsi-disk7,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk7,bus=scsi0.0,scsi-id=7,id=scsi-disk7 \
-drive file=/tmp/test8.img,if=none,id=drive-scsi-disk8,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk8,bus=scsi0.0,scsi-id=8,id=scsi-disk8 \
-drive file=/tmp/test9.img,if=none,id=drive-scsi-disk9,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk9,bus=scsi0.0,scsi-id=9,id=scsi-disk9 \
-drive file=/tmp/test10.img,if=none,id=drive-scsi-disk10,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk10,bus=scsi0.0,scsi-id=10,id=scsi-disk10 \
-drive file=/tmp/test11.img,if=none,id=drive-scsi-disk11,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk11,bus=scsi0.0,scsi-id=11,id=scsi-disk11 \
-drive file=/tmp/test12.img,if=none,id=drive-scsi-disk12,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk12,bus=scsi0.0,scsi-id=12,id=scsi-disk12 \
-drive file=/tmp/test13.img,if=none,id=drive-scsi-disk13,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk13,bus=scsi0.0,scsi-id=13,id=scsi-disk13 \
-drive file=/tmp/test14.img,if=none,id=drive-scsi-disk14,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk14,bus=scsi0.0,scsi-id=14,id=scsi-disk14 \
-drive file=/tmp/test15.img,if=none,id=drive-scsi-disk15,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk15,bus=scsi0.0,scsi-id=15,id=scsi-disk15 \
-drive file=/tmp/test16.img,if=none,id=drive-scsi-disk16,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk16,bus=scsi0.0,scsi-id=16,id=scsi-disk16 \
-drive file=/tmp/test17.img,if=none,id=drive-scsi-disk17,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk17,bus=scsi0.0,scsi-id=17,id=scsi-disk17 \
-drive file=/tmp/test18.img,if=none,id=drive-scsi-disk18,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk18,bus=scsi0.0,scsi-id=18,id=scsi-disk18 \
-drive file=/tmp/test19.img,if=none,id=drive-scsi-disk19,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk19,bus=scsi0.0,scsi-id=19,id=scsi-disk19 \
-drive file=/tmp/test20.img,if=none,id=drive-scsi-disk20,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk20,bus=scsi0.0,scsi-id=20,id=scsi-disk20 \
-drive file=/tmp/test21.img,if=none,id=drive-scsi-disk21,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk21,bus=scsi0.0,scsi-id=21,id=scsi-disk21 \
-drive file=/tmp/test22.img,if=none,id=drive-scsi-disk22,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk22,bus=scsi0.0,scsi-id=22,id=scsi-disk22 \
-drive file=/tmp/test23.img,if=none,id=drive-scsi-disk23,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk23,bus=scsi0.0,scsi-id=23,id=scsi-disk23 \
-drive file=/tmp/test24.img,if=none,id=drive-scsi-disk24,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk24,bus=scsi0.0,scsi-id=24,id=scsi-disk24 \
-drive file=/tmp/test25.img,if=none,id=drive-scsi-disk25,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk25,bus=scsi0.0,scsi-id=25,id=scsi-disk25 \
-drive file=/tmp/test26.img,if=none,id=drive-scsi-disk26,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk26,bus=scsi0.0,scsi-id=26,id=scsi-disk26 \
-drive file=/tmp/test27.img,if=none,id=drive-scsi-disk27,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk27,bus=scsi0.0,scsi-id=27,id=scsi-disk27 \
-drive file=/tmp/test28.img,if=none,id=drive-scsi-disk28,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk28,bus=scsi0.0,scsi-id=28,id=scsi-disk28 \
-drive file=/tmp/test29.img,if=none,id=drive-scsi-disk29,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk29,bus=scsi0.0,scsi-id=29,id=scsi-disk29 \
-drive file=/tmp/test30.img,if=none,id=drive-scsi-disk30,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk30,bus=scsi0.0,scsi-id=30,id=scsi-disk30 \
-drive file=/tmp/test31.img,if=none,id=drive-scsi-disk31,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk31,bus=scsi0.0,scsi-id=31,id=scsi-disk31 \
-drive file=/tmp/test32.img,if=none,id=drive-scsi-disk32,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk32,bus=scsi0.0,scsi-id=32,id=scsi-disk32 \
-drive file=/tmp/test33.img,if=none,id=drive-scsi-disk33,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk33,bus=scsi0.0,scsi-id=33,id=scsi-disk33 \
-drive file=/tmp/test34.img,if=none,id=drive-scsi-disk34,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk34,bus=scsi0.0,scsi-id=34,id=scsi-disk34 \
-drive file=/tmp/test35.img,if=none,id=drive-scsi-disk35,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk35,bus=scsi0.0,scsi-id=35,id=scsi-disk35 \
-drive file=/tmp/test36.img,if=none,id=drive-scsi-disk36,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk36,bus=scsi0.0,scsi-id=36,id=scsi-disk36 \
-drive file=/tmp/test37.img,if=none,id=drive-scsi-disk37,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk37,bus=scsi0.0,scsi-id=37,id=scsi-disk37 \
-drive file=/tmp/test38.img,if=none,id=drive-scsi-disk38,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk38,bus=scsi0.0,scsi-id=38,id=scsi-disk38 \
-drive file=/tmp/test39.img,if=none,id=drive-scsi-disk39,format=qcow2,cache=none,aio=native \
-drive file=/tmp/test40.img,if=none,id=drive-scsi-disk40,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk40,bus=scsi0.0,scsi-id=40,id=scsi-disk40 \
-drive file=/tmp/test41.img,if=none,id=drive-scsi-disk41,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk41,bus=scsi0.0,scsi-id=41,id=scsi-disk41 \
-drive file=/tmp/test42.img,if=none,id=drive-scsi-disk42,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk42,bus=scsi0.0,scsi-id=42,id=scsi-disk42 \
-drive file=/tmp/test43.img,if=none,id=drive-scsi-disk43,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk43,bus=scsi0.0,scsi-id=43,id=scsi-disk43 \
-drive file=/tmp/test44.img,if=none,id=drive-scsi-disk44,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk44,bus=scsi0.0,scsi-id=44,id=scsi-disk44 \
-drive file=/tmp/test45.img,if=none,id=drive-scsi-disk45,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk45,bus=scsi0.0,scsi-id=45,id=scsi-disk45 \
-drive file=/tmp/test46.img,if=none,id=drive-scsi-disk46,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk46,bus=scsi0.0,scsi-id=46,id=scsi-disk46 \
-drive file=/tmp/test47.img,if=none,id=drive-scsi-disk47,format=qcow2,cache=none,aio=native \
-drive file=/tmp/test48.img,if=none,id=drive-scsi-disk48,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk48,bus=scsi0.0,scsi-id=48,id=scsi-disk48 \
-drive file=/tmp/test49.img,if=none,id=drive-scsi-disk49,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk49,bus=scsi0.0,scsi-id=49,id=scsi-disk49 \
-drive file=/tmp/test50.img,if=none,id=drive-scsi-disk50,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk50,bus=scsi0.0,scsi-id=50,id=scsi-disk50 \
-drive file=/tmp/test51.img,if=none,id=drive-scsi-disk51,format=qcow2,cache=none,aio=native \
-device scsi-hd,drive=drive-scsi-disk51,bus=scsi0.0,scsi-id=51,id=scsi-disk51 \
-vnc 0:2 \
-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vgamem_mb=16,addr=0xB \
-enable-kvm \
-monitor stdio

2.Check scsi disks number in VM boot menu.

Actual results:
  Boot memu only contain 22 scsi disk boot items.
  Details, pls refer to attachment ---"Limited boot num for scsi"

Expected results:
  Boot memu should support the specified maximum boot number for scsi disks and other devices.


Additional info:
  seabios-1.9.1-2.el7 Boot menu only support 17 sata disk boot items.

Comment 2 Ademar Reis 2016-04-14 12:55:52 UTC
(In reply to aihua liang from comment #0)
> Created attachment 1147064 [details]
> Limited boot num for scsi
> 
> Description of problem:
>  Limited boot number supported for SCSI/SATA.
>  seabios-1.7.5-11.el7 don't have this problem.
> 
> Version-Release number of selected component (if applicable):
>  kerner version:3.10.0-371.el7.x86_64
>  qemu version:qemu-kvm-rhev-2.5.0-4.el7
>  seabios version:seabios-1.9.1-2.el7

So this appears to be a regression in Seabios.

Please confirm you have run a test with seabios-1.7.5 with the same kernel and QEMU versions as of this report.

Comment 4 aihua liang 2016-04-15 01:32:48 UTC
(In reply to Ademar Reis from comment #2)
> (In reply to aihua liang from comment #0)
> > Created attachment 1147064 [details]
> > Limited boot num for scsi
> > 
> > Description of problem:
> >  Limited boot number supported for SCSI/SATA.
> >  seabios-1.7.5-11.el7 don't have this problem.
> > 
> > Version-Release number of selected component (if applicable):
> >  kerner version:3.10.0-371.el7.x86_64
> >  qemu version:qemu-kvm-rhev-2.5.0-4.el7
> >  seabios version:seabios-1.9.1-2.el7
> 
> So this appears to be a regression in Seabios.
> 
> Please confirm you have run a test with seabios-1.7.5 with the same kernel
> and QEMU versions as of this report.


Under the same test environment, i only downgrade the seabios version to seabios-1.7.5,the problem not exist.

Comment 5 Gerd Hoffmann 2016-04-15 08:19:29 UTC
seabios running oom in fseg, 1.7.5 has 8k, 1.9.1 has 2k

Comment 6 Gerd Hoffmann 2016-04-15 10:38:00 UTC
https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=10876022

Please test.

Update:

--- a/scripts/layoutrom.py
+++ b/scripts/layoutrom.py
@@ -62,7 +62,7 @@ BUILD_BIOS_SIZE = 0x10000
 BUILD_ROM_START = 0xc0000
 BUILD_LOWRAM_END = 0xa0000
 # Space to reserve in f-segment for dynamic allocations
-BUILD_MIN_BIOSTABLE = 2048
+BUILD_MIN_BIOSTABLE = 8192
 
 # Layout the 16bit code.  This ensures sections with fixed offset
 # requirements are placed in the correct location.  It also places the

Comment 7 juzhang 2016-04-17 23:12:17 UTC
(In reply to Gerd Hoffmann from comment #6)
> https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=10876022
> 
> Please test.
> 
> Update:
> 
> --- a/scripts/layoutrom.py
> +++ b/scripts/layoutrom.py
> @@ -62,7 +62,7 @@ BUILD_BIOS_SIZE = 0x10000
>  BUILD_ROM_START = 0xc0000
>  BUILD_LOWRAM_END = 0xa0000
>  # Space to reserve in f-segment for dynamic allocations
> -BUILD_MIN_BIOSTABLE = 2048
> +BUILD_MIN_BIOSTABLE = 8192
>  
>  # Layout the 16bit code.  This ensures sections with fixed offset
>  # requirements are placed in the correct location.  It also places the

Hi Aliang,

Could you please it?

Best Regards,
Junyi

Comment 8 aihua liang 2016-04-18 01:21:00 UTC
(In reply to juzhang from comment #7)
> (In reply to Gerd Hoffmann from comment #6)
> > https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=10876022
> > 
> > Please test.
> > 
> > Update:
> > 
> > --- a/scripts/layoutrom.py
> > +++ b/scripts/layoutrom.py
> > @@ -62,7 +62,7 @@ BUILD_BIOS_SIZE = 0x10000
> >  BUILD_ROM_START = 0xc0000
> >  BUILD_LOWRAM_END = 0xa0000
> >  # Space to reserve in f-segment for dynamic allocations
> > -BUILD_MIN_BIOSTABLE = 2048
> > +BUILD_MIN_BIOSTABLE = 8192
> >  
> >  # Layout the 16bit code.  This ensures sections with fixed offset
> >  # requirements are placed in the correct location.  It also places the
> 
> Hi Aliang,
> 
> Could you please it?
> 
> Best Regards,
> Junyi

Hi,Junyi

 I'm testing now, will give a reply later.

BR,
Aliang

Comment 9 aihua liang 2016-04-18 03:06:40 UTC
(In reply to aihua liang from comment #8)
> (In reply to juzhang from comment #7)
> > (In reply to Gerd Hoffmann from comment #6)
> > > https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=10876022
> > > 
> > > Please test.
> > > 
> > > Update:
> > > 
> > > --- a/scripts/layoutrom.py
> > > +++ b/scripts/layoutrom.py
> > > @@ -62,7 +62,7 @@ BUILD_BIOS_SIZE = 0x10000
> > >  BUILD_ROM_START = 0xc0000
> > >  BUILD_LOWRAM_END = 0xa0000
> > >  # Space to reserve in f-segment for dynamic allocations
> > > -BUILD_MIN_BIOSTABLE = 2048
> > > +BUILD_MIN_BIOSTABLE = 8192
> > >  
> > >  # Layout the 16bit code.  This ensures sections with fixed offset
> > >  # requirements are placed in the correct location.  It also places the
> > 
> > Hi Aliang,
> > 
> > Could you please it?
> > 
> > Best Regards,
> > Junyi
> 
> Hi,Junyi
> 
>  I'm testing now, will give a reply later.
> 
> BR,
> Aliang


Hi, all

 Have tested on seabios-1.9.1-2.el7.bz1327060.2.x86_64.rpm, the result is as bellow:
  Boot number for scsi:118   --------> in seabios-1.7.5, the number is 126
  Boot number for ahci:85    --------> in seabios-1.7.5, the number is 93
  Boot number for virtioblk:18 ------> in seabios-1.7.5, the number is 8
 
 Although seabios-1.9.1-2.el7.bz1327060.2.x86_64.rpm has made a great progress, you have to do more to make it accurate, thanks.

BR,
Aliang

Comment 10 Gerd Hoffmann 2016-04-18 10:15:26 UTC
please try (10k bios table now)

https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=10885017

Comment 11 aihua liang 2016-04-18 11:48:05 UTC
(In reply to Gerd Hoffmann from comment #10)
> please try (10k bios table now)
> 
> https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=10885017

Hi,

I have tested on seabios-1.9.1-2.el7.bz1327060.3.x86_64.rpm, result is as bellow:
  Boot number for scsi:more than 130 --> in seabios-1.7.5, the number is 126
  Boot number for ahci:85            --> in seabios-1.7.5, the number is 93
  Boot number for virtioblk:17       --> in seabios-1.7.5, the number is 8

BR,
Aliang

Comment 12 Gerd Hoffmann 2016-04-19 06:46:10 UTC
8k fseg mem:
  Boot number for scsi:118   --------> in seabios-1.7.5, the number is 126
  Boot number for ahci:85    --------> in seabios-1.7.5, the number is 93
  Boot number for virtioblk:18 ------> in seabios-1.7.5, the number is 8

10k fseg mem:
  Boot number for scsi:more than 130 --> in seabios-1.7.5, the number is 126
  Boot number for ahci:85            --> in seabios-1.7.5, the number is 93
  Boot number for virtioblk:17       --> in seabios-1.7.5, the number is 8

Hmm, I tend to stick to 8k fseg mem.  Making it larger didn't help ahci and even decreased the number of virtio-blk disks.  And the 8k numbers are still higher than the documented limits (96 scsi disks and 48 or 64 ahci disks IIRC).

Beside that 7.3 will get OVMF which doesn't suffer from real mode address space constrains and should be able to handle large number of disks without problems.

Comment 13 Gerd Hoffmann 2016-04-19 11:28:58 UTC
patches sent.

Comment 15 Miroslav Rezanina 2016-04-26 07:04:19 UTC
Fix included in seabios-1.9.1-3.el7

Comment 17 aihua liang 2016-04-29 02:08:35 UTC
(In reply to Miroslav Rezanina from comment #15)
> Fix included in seabios-1.9.1-3.el7

Verified in seabios-1.9.1-3.el7, the problem has been resolved.

Comment 19 errata-xmlrpc 2016-11-04 00:28:20 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHEA-2016-2207.html