On 16/05/2017 18:14, Kevin O'Connor wrote: > Don't write to the cmos index port on a mode switch if NMI is already > disabled. This reduces the number of outb() calls. > > Signed-off-by: Kevin O'Connor <[email protected]> > --- > src/stacks.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/src/stacks.c b/src/stacks.c > index f4d15ce..2fe1bfb 100644 > --- a/src/stacks.c > +++ b/src/stacks.c > @@ -66,8 +66,10 @@ call32_prep(u8 method) > > // Backup cmos index register and disable nmi > u8 cmosindex = inb(PORT_CMOS_INDEX); > - outb(cmosindex | NMI_DISABLE_BIT, PORT_CMOS_INDEX); > - inb(PORT_CMOS_DATA); > + if (!(cmosindex & NMI_DISABLE_BIT)) { > + outb(cmosindex | NMI_DISABLE_BIT, PORT_CMOS_INDEX); > + inb(PORT_CMOS_DATA); > + } > SET_LOW(Call16Data.cmosindex, cmosindex); > > SET_LOW(Call16Data.method, method); > @@ -103,8 +105,11 @@ call32_post(void) > } > > // Restore cmos index register > - outb(GET_LOW(Call16Data.cmosindex), PORT_CMOS_INDEX); > - inb(PORT_CMOS_DATA); > + u8 cmosindex = GET_LOW(Call16Data.cmosindex); > + if (!(cmosindex & NMI_DISABLE_BIT)) { > + outb(cmosindex, PORT_CMOS_INDEX); > + inb(PORT_CMOS_DATA); > + } > return method; > } > >
NMI disable is actually a no-op on QEMU (as it never sends NMIs, either), we might as well skip it in that case. Paolo _______________________________________________ SeaBIOS mailing list [email protected] https://mail.coreboot.org/mailman/listinfo/seabios
