Messages in this thread | | | Date | Thu, 13 Aug 2009 17:46:10 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH 1/1] intel_txt: to fix build errors of CONFIG_ACPI_SLEEP |
| |
* H. Peter Anvin <hpa@zytor.com> wrote:
> On 08/12/2009 11:46 PM, Ingo Molnar wrote: > > * Wang, Shane <shane.wang@intel.com> wrote: > > > >> Signed-off-by: Shane Wang <shane.wang@intel.com> > >> > >> diff -r 7358cf1b3090 arch/x86/kernel/tboot.c > >> --- a/arch/x86/kernel/tboot.c Wed Aug 12 03:04:23 2009 -0700 > >> +++ b/arch/x86/kernel/tboot.c Wed Aug 12 18:06:21 2009 -0700 > >> @@ -169,6 +169,7 @@ void tboot_create_trampoline(void) > >> > >> static void set_mac_regions(void) > >> { > >> +#ifdef CONFIG_ACPI_SLEEP > >> tboot->num_mac_regions = 3; > >> /* S3 resume code */ > >> tboot->mac_regions[0].start = PFN_PHYS(PFN_DOWN(acpi_wakeup_address)); > >> @@ -181,6 +182,7 @@ static void set_mac_regions(void) > >> tboot->mac_regions[2].start = PFN_PHYS(PFN_DOWN(virt_to_phys(&_text))); > >> tboot->mac_regions[2].size = PFN_PHYS(PFN_UP(virt_to_phys(&_end))) - > >> PFN_PHYS(PFN_DOWN(virt_to_phys(&_text))); > >> +#endif > > > > These #ifdefs are quite ugly. Why not add a 'depends on ACPI_SLEEP' > > rule to the INTEL_TXT Kconfig section? > > I *strongly* disagree with that kind of false dependencies. It > makes it seem like there is something magic going on, which > invites cargo cult programming in the future. I also think those > particular #ifdefs are fairly innocuous... it's not like they're > hiding flow of control or major chunks of code.
no argument about that. But i'd rather have some extra dependency on a Kconfig than ugly #ifdefs.
and while it's certainly not the same kind of dependency as 'depends on ACPI', it's not really a false dependency either, it's just a different technical dependency: 'the ACPI_SLEEP interfaces suck a bit and we could only offer !ACPI_SLEEP support by uglifying the .c code - so we'll opt for always having it'.
> However, I think the actual code to set the sections is ugly as > hell, which is probably why the #ifdef sticks in your eyes.
Yeah.
> Consider the attached instead patch, which abstracts some of the > (way more complex than it should be) open-coded stuff and > therefore makes it stick out less.
it's better, but why not put these:
> +#ifdef CONFIG_ACPI_SLEEP > tboot->acpi_sinfo.kernel_s3_resume_vector = acpi_wakeup_address; > +#endif
into a helper inline in a header file and let the #ifdefs be there, or something like that. That way the .c file stays readable.
I.e. we can cleanly support !ACPI_SLEEP case too, because it's encapsulated and abstracted away.
Ingo
| |