[SeaBIOS] [PATCH 2/2] vgabios: Limit the range of the VBE number of "pages" parameter.
kevin at koconnor.net
Sat Sep 14 18:01:09 CEST 2013
On Sat, Sep 14, 2013 at 09:11:02AM +0200, Paul Menzel wrote:
> Am Freitag, den 13.09.2013, 16:24 -0400 schrieb Kevin O'Connor:
> > Looking at the output of other VGA BIOS implementations, it appears
> > that the number of available video pages reported is always between 1
> > and 127.
> That is including 1 and 127, right?
> > Signed-off-by: Kevin O'Connor <kevin at koconnor.net>
> > ---
> > vgasrc/vbe.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> > diff --git a/vgasrc/vbe.c b/vgasrc/vbe.c
> > index d962333..2c08736 100644
> > --- a/vgasrc/vbe.c
> > +++ b/vgasrc/vbe.c
> > @@ -144,6 +144,10 @@ vbe_104f01(struct bregs *regs)
> > mode_attr |= VBE_MODE_ATTRIBUTE_LINEAR_FRAME_BUFFER_MODE;
> > break;
> > }
> > + if (pages > 128)
> > + pages = 128;
> As 1 gets subtracted (below in diff), in this case 127 is included.
> > + if (pages < 2)
> > + pages++;
> Can pages be 0? If yes, it would be 0 again after substracting 1. Should
> it be `pages = 1` instead of `pages++`?
The goal was to report 0 if there isn't enough memory for even a
single image. Ideally that would not happen in practice as it
shouldn't even be presented as a valid video mode if there isn't
enough memory for it.
Otherwise, the goal is to report between 1-127 (inclusive) for the
number of pages. So, if there is only enough ram for 1 image, then
the code would report 1 (which means 2 images). If there is enough
ram for more than 128 images, then the code would report 127 (which
means 128). This is what the AMD VGABIOS appears to be doing.
More information about the SeaBIOS