----- Forwarded message from Gleb Natapov <g...@redhat.com> ----- From: Gleb Natapov <g...@redhat.com> To: Kevin O'Connor <ke...@koconnor.net> Date: Sun, 13 Dec 2009 15:18:08 +0200 Subject: Re: [...@virtutech.com: [coreboot] [PATCH] Seabios: Fix PkgLength calculation for the SSDT.]
On Thu, Dec 10, 2009 at 08:55:30AM -0500, Kevin O'Connor wrote: > FYI. > > ----- Forwarded message from Magnus Christensson <m...@virtutech.com> ----- > > From: Magnus Christensson <m...@virtutech.com> > To: coreb...@coreboot.org > Date: Thu, 26 Nov 2009 13:22:14 +0100 > Subject: [coreboot] [PATCH] Seabios: Fix PkgLength calculation for the SSDT. > > See attached patch. > > M. > > > >From d9dc0f50b2ce756e8a3b4ede0a8ecbe76f2afcb8 Mon Sep 17 00:00:00 2001 > From: Magnus Christensson <m...@virtutech.com> > Date: Wed, 25 Nov 2009 16:26:58 +0100 > Subject: [PATCH 13/13] Fix PkgLength calculation for the SSDT. > > Signed-off-by: Magnus Christensson <m...@virtutech.com> > --- > src/acpi.c | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/acpi.c b/src/acpi.c > index 843af69..88007ae 100644 > --- a/src/acpi.c > +++ b/src/acpi.c > @@ -464,10 +464,12 @@ build_ssdt(void) > // build processor scope header > *(ssdt_ptr++) = 0x10; // ScopeOp > if (cpu_length <= 0x3e) { > + /* Handle 1-4 CPUs with one byte encoding */ > *(ssdt_ptr++) = cpu_length + 1; > } else { > - *(ssdt_ptr++) = 0x7F; > - *(ssdt_ptr++) = (cpu_length + 2) >> 6; > + /* Handle 5-314 CPUs with two byte encoding */ > + *(ssdt_ptr++) = 0x40 | ((cpu_length + 1) & 0xf); > + *(ssdt_ptr++) = (cpu_length + 1) >> 4; Should be cpu_length + 2 as far as I can tell. The current code is definitely broken. > } > *(ssdt_ptr++) = '_'; // Name > *(ssdt_ptr++) = 'P'; > -- > 1.6.2.5 > > > -- > coreboot mailing list: coreb...@coreboot.org > http://www.coreboot.org/mailman/listinfo/coreboot > > ----- End forwarded message ----- -- Gleb. ----- End forwarded message -----