Index: linuxfirmwarekit/dumpxml.c =================================================================== --- linuxfirmwarekit/dumpxml.c (revision 218) +++ linuxfirmwarekit/dumpxml.c (revision 257) @@ -1,175 +0,0 @@ -/* - * Copyright (C) 2006, Intel Corporation - * - * This file is part of the Linux-ready Firmware Developer Kit - * - * This program file is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation; version 2.1 of the License. - * - * This library is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License - * for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program in a file named COPYING; if not, write to the - * Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, - * Boston, MA 02110-1301 USA - */ - -#define _GNU_SOURCE -#include -#include -#include -#include -#include - -#include - -#include "biostest.h" - - -/* Dump all test results in an xml formatted file */ -void dump_xml(GList *all_tests, char *filename) -{ - FILE *file; - GList *list1, *list2; - struct major_test *test; - struct detailed_result *result; - - file = fopen(filename, "w"); - if (!file) - return; - - - fprintf(file, "\n"); - fprintf(file, "\n"); - fprintf(file, "\n"); - - - list1 = g_list_first(all_tests); - while (list1) { - test = (struct major_test *)list1->data; - - fprintf(file,"\n\t%s\n\t%s\n\t%i\n \n", - test->ID, test->name, test->result); - if (test->description) - fprintf(file, "\t%s\n", test->description->details); - - - list2 = g_list_first(test->details); - while (list2) { - result = (struct detailed_result*)list2->data; - fprintf(file,"\t\n\t\t%s\n\t\t%i\n", - result->summary, result->result); - if (result->devuri) - fprintf(file,"\t\t%s\n\t\t", result->devuri); - if (result->details) { - char *c; - c = xmlescape(result->details); - fprintf(file,"\t\t%s\n", c); - free(c); - } - fprintf(file,"\t\n"); - - - list2 = g_list_next(list2); - } - fprintf(file,"\n"); - - list1 = g_list_next(list1); - } - fprintf(file, "\n"); - fclose(file); -} - -/* Dump all test results in a text formatted file */ -void dump_text(GList *all_tests, char *filename) -{ - FILE *file; - GList *list1, *list2; - struct major_test *test; - struct detailed_result *result; - int nrtotal, nrpass, nrwarn, nrfail; - - file = fopen(filename, "w"); - if (!file) - return; - - fprintf(file, "-------------------------------------------------\n" - " Date: %s \n" - "* *\n" - "* Firmwarekit (release 2.0) *\n" - "* http://www.linuxfirmwarekit.org *\n" - "* *\n" - "* *\n" - "* For more information on test descriptions *\n" - "* and details on what the PASS/INFO/WARN/FAIL *\n" - "* results mean, go to: Documentation/TestsInfo. *\n" - "* *\n" - "-------------------------------------------------\n\n", - get_time_stamp()); - - - list1 = g_list_first(all_tests); - - /* Firt get summary of test report */ - nrtotal = 0; - nrpass = 0; - nrfail = 0; - nrwarn = 0; - - while (list1) { - test = (struct major_test *)list1->data; - - nrtotal++; - switch (test->result) { - case PASS: - case INFO: - nrpass++; - break; - case WARN: - nrwarn++; - break; - case FAIL: - nrfail++; - break; - } - - list1 = g_list_next(list1); - } - fprintf(file, "SUMMARY: %d Fails, %d Warns, %d Pass, %d Total\n\n", - nrfail, nrwarn, nrpass, nrtotal); - - list1 = g_list_first(all_tests); - while (list1) { - test = (struct major_test *)list1->data; - - - fprintf(file, "=================================================\n" - "* Plugin name: %s\n\n" - "* Title: %s\n" - "* Description: %s\n" - "* Result: %s\n" - "================================================\n\n", - test->ID, test->name, test->description->details, - result_to_ascii(test->result)); - - - list2 = g_list_first(test->details); - while (list2) { - result = (struct detailed_result*)list2->data; - - fprintf(file, "[%s]-%s\n\n", result_to_ascii(result->result), - result->summary); - if (result->details) - fprintf(file, "%s\n\n", result->details); - - list2 = g_list_next(list2); - } - list1 = g_list_next(list1); - } - fclose(file); -} Index: linuxfirmwarekit/dsdt.c =================================================================== --- linuxfirmwarekit/dsdt.c (revision 218) +++ linuxfirmwarekit/dsdt.c (revision 257) @@ -48,50 +48,6 @@ int ssdt_size[MAX_SSDTS] = {4,4,4,4,4,4,4,4,4,4,4}; static int current_ssdt; /* current pointer to which dsdt or ssdt table we're accessing */ -/* extract_dsdt_ssdts () -- Obtain the dsdt and ssdt acpi tables */ -void extract_dsdt_ssdts() -{ - - int ret; - - /* create hex-dump format of all acpi tables in file 'acpidump' */ - system("plugins/acpidump > acpi.dump &> /dev/null"); - if (access("acpi.dump", R_OK)) - fprintf(stderr,"WARN (acpidump): failed to create acpi.dump.\n"); - - /* use 'acpidump' file to extract dsdt and ssdt tables - * in binary format, creates DSDT.dat and SSDT*.dat */ - system("plugins/acpixtract acpi.dump &> /dev/null"); - if (access("DSDT.dat", R_OK)) { - ret = system("cat /proc/acpi/dsdt > DSDT.dat"); - if (ret != EXIT_SUCCESS) { - fprintf(stderr,"WARN (acpixtract: failed to create DSDT.dat.\n"); - return; - } - } - - /* Disassemble DSDT.dat with iasl, will create DSDT.dsl */ - system("plugins/iasl -d DSDT.dat &>/dev/null"); - if (access("DSDT.dsl", R_OK)) - fprintf(stderr,"WARN (iasl): failed to create DSDT.dsl.\n"); - - /* Include ACPI table for external symbol resolution (if they exist) */ - system("plugins/iasl -d -e DSDT.dat SSDT.dat &>/dev/null"); - system("plugins/iasl -d -e DSDT.dat SSDT1.dat &>/dev/null"); - system("plugins/iasl -d -e DSDT.dat SSDT2.dat &>/dev/null"); - system("plugins/iasl -d -e DSDT.dat SSDT3.dat &>/dev/null"); - system("plugins/iasl -d -e DSDT.dat SSDT4.dat &>/dev/null"); - system("plugins/iasl -d -e DSDT.dat SSDT5.dat &>/dev/null"); - system("plugins/iasl -d -e DSDT.dat SSDT6.dat &>/dev/null"); - system("plugins/iasl -d -e DSDT.dat SSDT7.dat &>/dev/null"); - system("plugins/iasl -d -e DSDT.dat SSDT8.dat &>/dev/null"); - system("plugins/iasl -d -e DSDT.dat SSDT9.dat &>/dev/null"); - - /* current iasl has an issue with arugment counts in SSDT's, work around this */ - system("sed -i -e \"s/^ACPI Error.*Argument count mismatch for method.*//g\" SSDT*.dsl &> /dev/null"); - -} - /* push () -- adds a '{' to locator string */ static void push(char *s) { @@ -365,6 +321,7 @@ chop_lastchar(parent); + /* There is where we get aml:// gets printed in the resources list */ if (strlen(line->locator)>=2 && line->locator[strlen(line->locator)-1]!='.') announce_resource(uri, buffer, parent); @@ -396,8 +353,6 @@ int i; char filen[1024]; - extract_dsdt_ssdts(); - parse_dsdt("DSDT.dsl"); announce_aml_resources(); Index: linuxfirmwarekit/usbports/Makefile =================================================================== --- linuxfirmwarekit/usbports/Makefile (revision 218) +++ linuxfirmwarekit/usbports/Makefile (revision 257) @@ -1,11 +1,11 @@ -override CFLAGS += `pkg-config --cflags glib-2.0` -fPIC -I.. -I/usr/include/slang +override CFLAGS += `pkg-config --cflags glib-2.0` -fPIC -fno-stack-protector -I.. -I/usr/include/slang LDFLAGS = -nodefaultlibs -L../initramfs/data/lib -L../initramfs/data/usr/lib `pkg-config --libs glib-2.0` all: usbports.so usbports.so: usbports.o .depend - gcc --shared usbports.o $(LDFLAGS) -o usbports.so -lnewt + gcc -shared usbports.o $(LDFLAGS) -o usbports.so -lnewt cp usbports.so ../plugins clean: Index: linuxfirmwarekit/biostest.h =================================================================== --- linuxfirmwarekit/biostest.h (revision 218) +++ linuxfirmwarekit/biostest.h (revision 257) @@ -110,7 +110,7 @@ extern void dump_xml_resources(char *filename); -/* dumpxml.c */ +/* dumpresults.c */ extern void dump_xml(GList *all_tests, char *filename); extern void dump_text(GList *all_tests, char *filename); @@ -134,12 +134,10 @@ /* acpitable.c */ extern unsigned long RSDP_ADDRESS; -extern void extract_dsdt_ssdts(); +extern void extract_acpi_tables(); extern int locate_acpi_table(char *name, unsigned long *address, unsigned long *size); -extern int locate_acpi_table32(char *name, unsigned long *address, unsigned long *size); -extern int locate_acpi_table64(char *name, unsigned long *address, unsigned long *size); extern int e820_is_reserved(uint64_t memory); -extern char *copy_acpi_table(uint64_t address, char *name); +extern char *copy_acpi_table(void *address, char *name); extern char *execute_aml_method(char *method, char *execute); /* lib.c */ @@ -150,7 +148,9 @@ extern int is_prefix(char *needle, char *haystack); extern char *xmlescape(char *string); extern int space_count(char *s); +extern char *get_relative_command(char *cmd, char *options); +extern char *get_kernel_ver(void); +extern char *get_lfdk_ver(void); - #endif Index: linuxfirmwarekit/ia64_mce_inject/Makefile =================================================================== --- linuxfirmwarekit/ia64_mce_inject/Makefile (revision 218) +++ linuxfirmwarekit/ia64_mce_inject/Makefile (revision 257) @@ -5,7 +5,7 @@ all: mce_inject.so err_inject_tool mce_inject.so: mce_inject.o .depend - gcc --shared mce_inject.o $(LDFLAGS) -o mce_inject.so -lnewt + gcc -shared mce_inject.o $(LDFLAGS) -o mce_inject.so -lnewt cp mce_inject.so ../plugins err_inject_tool: Index: linuxfirmwarekit/dmar/dmar.c =================================================================== --- linuxfirmwarekit/dmar/dmar.c (revision 0) +++ linuxfirmwarekit/dmar/dmar.c (revision 257) @@ -0,0 +1,319 @@ +/* + * Copyright (C) 2006, Intel Corporation + * + * This file is part of the Linux-ready Firmware Developer Kit + * + * This program file is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation;version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "../biostest.h" + +#include +#include +#include +#include +#include + +#define MASK_4K 0xfff +/* DMA Remapping Reporting Table (DMAR) */ +struct acpi_table_dmar { + u_int8_t head[36]; + u_int8_t haw; + u_int8_t flags; + u_int8_t reserved[10]; +} __attribute__((packed)); + +#define DMAR_HEADER_SIZE sizeof(struct acpi_table_dmar) + +struct acpi_dmar_entry_header { + u_int16_t type; + u_int16_t length; +} __attribute__((packed)); + +enum acpi_dmar_entry_type { + ACPI_DMAR_DRHD = 0, + ACPI_DMAR_RMRR, + ACPI_DMAR_ASTR, + ACPI_DMAR_ENTRY_COUNT +}; + +struct acpi_table_drhd { + struct acpi_dmar_entry_header header; + u_int8_t flags; /* BIT0: INCLUDE_ALL */ + u_int8_t reserved; + u_int16_t segment; + u_int64_t address; /* register base address for this drhd */ +} __attribute__ ((packed)); + +struct acpi_table_rmrr { + struct acpi_dmar_entry_header header; + u_int16_t reserved; + u_int16_t segment; + u_int64_t base_address; + u_int64_t end_address; +} __attribute__ ((packed)); + +enum acpi_dev_scope_type { + ACPI_DEV_ENDPOINT=0x01, + ACPI_DEV_P2PBRIDGE, + ACPI_DEV_IOAPIC, + ACPI_DEV_HPET, + ACPI_DEV_ENTRY_COUNT +}; + +struct acpi_dev_scope { + u_int8_t dev_type; + u_int8_t length; + u_int16_t reserved; + u_int8_t enumeration_id; + u_int8_t start_bus; +} __attribute__((packed)); + +struct acpi_pci_path { + u_int8_t dev; + u_int8_t fn; +} __attribute__((packed)); + +#define MIN_SCOPE_LEN (sizeof(struct acpi_pci_path) + \ + sizeof(struct acpi_dev_scope)) + +/* + * = -1, no such device + * = 0, normal pci device + * = 1, pci bridge, sec_bus gets set + */ +static int read_pci_device_secondary_bus_number(u_int8_t seg, + u_int8_t bus, u_int8_t dev, + u_int8_t fn, u_int8_t *sec_bus) +{ + FILE *file; + char str[80]; + char configs[64]; + size_t count; + + sprintf(str, "/sys/bus/pci/devices/%04x:%02x:%02x.%d/config", seg, bus, dev, fn); + file = fopen(str, "r"); + if (!file) + return -1; + count = fread(configs, sizeof(char), 64, file); + if (count < 64) + return -1; + fclose(file); + + /* header type is at 0x0e */ + if ((configs[0xe] & 0x7f) != 1) //not a pci bridge + return 0; + *sec_bus = configs[0x19]; //secondary bus number + return 1; +} + +static int acpi_parse_one_dev_scope(struct acpi_dev_scope *scope, int seg) +{ + struct acpi_pci_path *path; + int count; + u_int8_t bus, sec_bus = 0; + int dev_type; + + if (scope->length < MIN_SCOPE_LEN) { + report_result("DMAR", FAIL, "Invalid device scope entry", NULL, NULL); + return EINVAL; + } + + if (scope->dev_type >= ACPI_DEV_ENTRY_COUNT) { + report_result("DMAR", WARN, "Unknown device scope type", NULL, NULL); + return EINVAL; + } + + if (scope->dev_type > ACPI_DEV_P2PBRIDGE) { + report_result("DMAR", INFO, "Unknown device scope type, the test case should be fixed", NULL, NULL); + return EINVAL; + } + + bus = scope->start_bus; + count = (scope->length - sizeof(struct acpi_dev_scope)) + /sizeof(struct acpi_pci_path); + path = (struct acpi_pci_path *)(scope + 1); + + if (!count) + goto error; + dev_type = 1; + while (count) { + if (dev_type <= 0) //last device isn't a pci bridge + goto error; + dev_type = read_pci_device_secondary_bus_number(seg, bus, + path->dev, path->fn, &sec_bus); + if (dev_type < 0) //no such device + goto error; + path ++; + count --; + bus = sec_bus; + } + + if ((scope->dev_type == ACPI_DEV_ENDPOINT && dev_type > 0) || + (scope->dev_type == ACPI_DEV_P2PBRIDGE && dev_type == 0)) { + report_result("DMAR", FAIL, "Device scope type not match", NULL, NULL); + return EINVAL; + } + return 0; +error: + report_result("DMAR", FAIL, "Device scope device not found", NULL, NULL); + return EINVAL; +} + +static int acpi_parse_dev_scope(void *start, void *end, int seg) +{ + struct acpi_dev_scope *scope; + int ret; + + while (start < end) { + scope = start; + ret = acpi_parse_one_dev_scope(scope, seg); + if (ret) + return ret; + start += scope->length; + } + return 0; +} + +static int acpi_parse_one_drhd(struct acpi_dmar_entry_header *header) +{ + static int include_all; + struct acpi_table_drhd *drhd = (struct acpi_table_drhd*)header; + + if (drhd->address & MASK_4K) { + report_result("DMAR", FAIL, "Invalid drhd register address", NULL, NULL); + return EINVAL; + } + if (drhd->flags & 1) { + if (include_all == 1) { + report_result("DMAR", FAIL, "Multiple drhds have include_all flag set", NULL, NULL); + return EINVAL; + } + include_all = 1; + } else { + return acpi_parse_dev_scope((void *)(drhd + 1), + ((void *)drhd) + header->length, drhd->segment); + } + return 0; +} + +static int acpi_parse_one_rmrr(struct acpi_dmar_entry_header *header) +{ + struct acpi_table_rmrr *rmrr = (struct acpi_table_rmrr *)header; + + if ((rmrr->base_address & MASK_4K) + || (rmrr->end_address < rmrr->base_address) + || ((rmrr->end_address - rmrr->base_address + 1) & MASK_4K)) { + report_result("DMAR", FAIL, "Invalid rmrr range address", NULL, NULL); + return EINVAL; + } + return acpi_parse_dev_scope((void *)(rmrr + 1), + ((void*)rmrr) + header->length, rmrr->segment); +} + +static int dmar_acpi_table_check(void) +{ + unsigned long address; + unsigned long size; + char *table_ptr = NULL; + struct acpi_dmar_entry_header *header; + int found_dmar = 0; + + if (locate_acpi_table("DMAR", &address, &size)) { + report_result("DMAR", INFO, "No DMAR ACPI table found.", NULL, NULL); + goto out; + } + + found_dmar = 1; + + if (address == 0 || size <= DMAR_HEADER_SIZE) { + report_result("DMAR", FAIL, "Invalid DMAR ACPI table", NULL, NULL); + goto out; + } + + table_ptr = copy_acpi_table(address, "DMAR"); + if (table_ptr == NULL) { + report_result("DMAR", FAIL, "Invalid DMAR ACPI table size", NULL, NULL); + goto out; + } + header = (struct acpi_dmar_entry_header *)(table_ptr+DMAR_HEADER_SIZE); + while ((unsigned long)header < (unsigned long)(table_ptr + size)) { + switch (header->type) { + case ACPI_DMAR_DRHD: + if (acpi_parse_one_drhd(header)) + goto out; + break; + case ACPI_DMAR_RMRR: + if (acpi_parse_one_rmrr(header)) + goto out; + break; + } + header = ((void *)header) + header->length; + } + report_result("DMAR", PASS, "DMAR ACPI table is ok", NULL, NULL); +out: + free(table_ptr); + return found_dmar; +} + +static void dmar_check_line(gpointer data, gpointer user_data) +{ + char *line = (char *)data; + + if (strstr(line, "DMAR:[fault reason")) + report_result("DMAR", FAIL, line, NULL, NULL); +} + +static void do_manual_dmar_test(void) +{ + int found_dmar; + + start_test("DMAR", "(experimental) DMA Remapping (VT-d) test", + "Verify if DMA remapping is sane."); + + found_dmar = dmar_acpi_table_check(); + + /* Runtime check */ + if (found_dmar) + g_list_foreach(boot_dmesg, dmar_check_line, NULL); + + finish_test("DMAR"); +} + +void run_test(void) +{ + if (safe_mode) + register_interactive_test("DMAR test", do_manual_dmar_test); + else + do_manual_dmar_test(); +} Index: linuxfirmwarekit/dmar/Makefile =================================================================== --- linuxfirmwarekit/dmar/Makefile (revision 0) +++ linuxfirmwarekit/dmar/Makefile (revision 257) @@ -0,0 +1,26 @@ +CFLAGS = -Wall -W -Os -D_FORTIFY_SOURCE=2 `pkg-config --cflags glib-2.0` -fPIC -g -I.. +LDFLAGS = `pkg-config --libs glib-2.0` + + +all: dmar.so + +dmar.so: dmar.o .depend + gcc --shared dmar.o $(LDFLAGS) -o dmar.so -lnewt + cp dmar.so ../plugins + +clean: + rm -rf *~ *.o + rm -f dmar.so + + +# most of the makefile remains as it was before. +# at the bottom, we add these lines: + +# rule for building dependency lists, and writing them to a file +# named ".depend". +.depend: + rm -f .depend + gccmakedep -f- -- $(CFLAGS) -- *.c > .depend + +# now add a line to include the dependency list. +include .depend Index: linuxfirmwarekit/virt/virt_vmx.c =================================================================== --- linuxfirmwarekit/virt/virt_vmx.c (revision 0) +++ linuxfirmwarekit/virt/virt_vmx.c (revision 257) @@ -0,0 +1,119 @@ +/* + * Copyright (C) 2006, Intel Corporation + * Copyright (C) 2007, AMD Inc + * + * This file is part of the Linux-ready Firmware Developer Kit + * + * This program file is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation;version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + + +/* + * This test checks if the VT-setup is done correctly by the BIOS + */ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +static unsigned long long readmsr(int cpu, unsigned long offset) +{ + char buffer[PATH_MAX]; + FILE *file; + int fd; + unsigned long long msr_value=0xffffffff; + unsigned char *msr_value_buf; + int ret; + + msr_value_buf = (unsigned char *)&msr_value; + sprintf(buffer, "/dev/msr%i", cpu); + file = fopen(buffer, "r"); + if (!file) { + printf("Error: fopen failed \n"); + return -1; + } + fd = fileno(file); + + ret = pread(fd, msr_value_buf, 8, offset); + fclose(file); + if (ret<0) { + printf("Error: pread failed %d\n, errno=%d", ret, errno); + return -2; + } + + return msr_value; +} + +static int cpu_has_vmx(void) +{ + char line[4096]; + int hasit = 0; + FILE *file; + file = fopen("/proc/cpuinfo", "r"); + if (!file) + return 0; + while (!feof(file)) { + memset(line, 0, 4096); + fgets(line, 4095, file); + if (strstr(line,"flags") && strstr(line," vmx")) + hasit = 1; + } + fclose(file); + return hasit; +} + +#define MSR_FEATURE_CONTROL 0x03a + +static int vt_locked_by_bios(void) +{ + uint64_t msr; + + msr = readmsr(0, MSR_FEATURE_CONTROL); + return (msr & 5) == 1; /* VT capable but locked by bios*/ +} + +int do_virt_check_vmx() +{ + FILE *file; + start_test("virt", "VT/VMX Virtualization extensions", + "This test checks if VT/VMX is set up correctly"); + + if (!cpu_has_vmx()) + report_result("virt", INFO, "Processor does not support Virtualization extensions", NULL, NULL); + else + if (vt_locked_by_bios()) + report_result("virt", FAIL, "Virtualization extensions supported but disabled by BIOS", NULL, NULL); + + finish_test("virt"); + return EXIT_SUCCESS; +} + + + Index: linuxfirmwarekit/virt/virt.c =================================================================== --- linuxfirmwarekit/virt/virt.c (revision 218) +++ linuxfirmwarekit/virt/virt.c (revision 257) @@ -1,5 +1,6 @@ /* - * Copyright (C) 2006, Intel Corporation + * Copyright (C) 2006, Intel Corp + * Copyright (C) 2007, AMD Inc * * This file is part of the Linux-ready Firmware Developer Kit * @@ -21,98 +22,61 @@ /* - * This test checks if the VT-setup is done correctly by the BIOS + * This test checks if the virtual machine setup is done correctly by the BIOS */ #define _GNU_SOURCE -#include -#include +#include #include -#include -#include -#include #include -#include -#include -#include -#include -#include -#include -#include +extern int do_virt_check_svm(); +extern int do_virt_check_vmx(); +#include "virt.h" -static unsigned long long readmsr(int cpu, unsigned long offset) +#define CPUID_NUM_FEATURES 0x00000000L + +static int is_amd() { - char buffer[PATH_MAX]; - FILE *file; - int fd; - unsigned long long msr_value=0xffffffff; - unsigned char *msr_value_buf; - int ret; + char stramd[64]; - msr_value_buf = (unsigned char *)&msr_value; - sprintf(buffer, "/dev/msr%i", cpu); - file = fopen(buffer, "r"); - if (!file) { - printf("Error: fopen failed \n"); - return -1; - } - fd = fileno(file); + memset(stramd, 0, 64); - ret = pread(fd, msr_value_buf, 8, offset); - fclose(file); - if (ret<0) { - printf("Error: pread failed %d\n, errno=%d", ret, errno); - return -2; - } + cpu_registers regs; + exec_cpuid(CURRENT_CPU, CPUID_NUM_FEATURES, ®s); + + memcpy(stramd, ®s.ebx, 4 ); + memcpy(stramd + 4, ®s.edx, 4); + memcpy(stramd + 8, ®s.ecx, 4); - return msr_value; + return (!strcmp("AuthenticAMD", stramd)); } -static int cpu_has_vmx(void) +static int is_intel() { - char line[4096]; - int hasit = 0; - FILE *file; - file = fopen("/proc/cpuinfo", "r"); - if (!file) - return 0; - while (!feof(file)) { - memset(line, 0, 4096); - fgets(line, 4095, file); - if (strstr(line,"flags") && strstr(line," vmx")) - hasit = 1; - } - fclose(file); - return hasit; -} + char strintel[64]; + memset( strintel, 0, 64 ); -#define MSR_FEATURE_CONTROL 0x03a + cpu_registers regs; + exec_cpuid(CURRENT_CPU, CPUID_NUM_FEATURES, ®s); + + memcpy(strintel, ®s.ebx, 4); + memcpy(strintel + 4, ®s.edx, 4); + memcpy(strintel + 8, ®s.ecx, 4); -static int vt_locked_by_bios(void) -{ - uint64_t msr; - - msr = readmsr(0, MSR_FEATURE_CONTROL); - return (msr & 5) == 1; /* VT capable but locked by bios*/ + return (!strcmp("GenuineIntel", strintel)); } int main(int argc, char **argv) { - FILE *file; - start_test("virt", "VT/VMX Virtualization extensions", - "This test checks if VT/VMX is set up correctly"); - - if (!cpu_has_vmx()) - report_result("virt", INFO, "Processor does not support Virtualization extensions", NULL, NULL); - else - if (vt_locked_by_bios()) - report_result("virt", FAIL, "Virtualization extensions supported but disabled by BIOS", NULL, NULL); - - finish_test("virt"); - return EXIT_SUCCESS; + if (is_amd()) { + return do_virt_check_svm(); + } + else if (is_intel()) { + return do_virt_check_vmx(); + } } Index: linuxfirmwarekit/virt/virt.h =================================================================== --- linuxfirmwarekit/virt/virt.h (revision 0) +++ linuxfirmwarekit/virt/virt.h (revision 257) @@ -0,0 +1,69 @@ +#ifndef __VIRT_H_INCLUDE_GUARD__ +#define __VIRT_H_INCLUDE_GUARD__ +/* + * Copyright (C) 2006, Intel Corporation + * Copyright (C) 2007, AMD Inc + * + * This file is part of the Linux-ready Firmware Developer Kit + * + * This program file is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation;version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#include + +#define CURRENT_CPU 0xFF +typedef struct __cpu_registers +{ + uint32_t eax; + uint32_t ebx; + uint32_t ecx; + uint32_t edx; +}cpu_registers; + +static inline void exec_cpuid( int cpu, uint32_t cmd, cpu_registers* regs) +{ + cpu_set_t mask, oldmask; + + if (cpu != CURRENT_CPU) { + sched_getaffinity(0, sizeof(oldmask), &oldmask); + CPU_ZERO(&mask); + CPU_SET(cpu, &mask); + sched_setaffinity(0, sizeof(mask), &mask); + } + +#if defined(__i386__) + __asm__ __volatile__ ( "pushl %%ebx \n\t" + "cpuid \n\t" + "movl %%ebx,%%esi \n\t" + "popl %%ebx \n\t" + : "=a"(regs->eax),"=S"(regs->ebx), + "=c"(regs->ecx),"=d"(regs->edx) + : "a"(cmd) + ); +#elif defined (__x86_64__) + __asm__ __volatile__ ( "cpuid \n\t" + : "=a"(regs->eax),"=b"(regs->ebx), + "=c"(regs->ecx),"=d"(regs->edx) + : "a"(cmd) + ); +#endif + + if (cpu != CURRENT_CPU) { + sched_setaffinity(0, sizeof(oldmask), &oldmask); + } +} + +#endif Index: linuxfirmwarekit/virt/virt_svm.c =================================================================== --- linuxfirmwarekit/virt/virt_svm.c (revision 0) +++ linuxfirmwarekit/virt/virt_svm.c (revision 257) @@ -0,0 +1,139 @@ +/* + * Copyright (C) 2006, Intel Corp + * Copyright (C) 2007, AMD Inc + * + * This file is part of the Linux-ready Firmware Developer Kit + * + * This program file is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation;version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + + +/* + * This test checks if the SVM-setup is done correctly by the BIOS + */ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "virt.h" + +static unsigned long long readmsr(int cpu, unsigned long offset) +{ + char buffer[PATH_MAX]; + FILE *file; + int fd; + unsigned long long msr_value=0xffffffff; + unsigned char *msr_value_buf; + int ret; + + msr_value_buf = (unsigned char *)&msr_value; + sprintf(buffer, "/dev/msr%i", cpu); + file = fopen(buffer, "r"); + if (!file) { + printf("Error: fopen failed \n"); + return -1; + } + fd = fileno(file); + + ret = pread(fd, msr_value_buf, 8, offset); + fclose(file); + if (ret<0) { + printf("Error: pread failed %d\n, errno=%d", ret, errno); + return -2; + } + + return msr_value; +} + +static int cpu_has_svm(void) +{ + char line[4096]; + int hasit = 0; + int family = 0xF; + char *ptr; + FILE *file; + file = fopen("/proc/cpuinfo", "r"); + if (!file) + return 0; + while (!feof(file)) { + memset(line, 0, 4096); + fgets(line, 4095, file); + + if (strstr(line,"flags") && strstr(line," svm")) + hasit = 1; + } + fclose(file); + return hasit; +} + +#define CPUID_FAM_REV 0x1 + +static int can_lock_with_msr(void) +{ + int family = 0xF; + cpu_registers regs; + exec_cpuid(CURRENT_CPU, CPUID_FAM_REV, ®s); + + family = (regs.eax>>8 & 0xF) + (regs.eax>>20 & 0xFF); + + return (family & 0x10); +} + +#define MSR_FEATURE_CONTROL 0xC0000080 + +static int vt_locked_by_bios(void) +{ + uint64_t msr; + + if (!can_lock_with_msr()) + return 0; + + msr = readmsr(0, MSR_FEATURE_CONTROL); + return (msr & 0x1000) == 1; /* SVM capable but locked by bios*/ +} + +int do_virt_check_svm() +{ + FILE *file; + start_test("virt", "SVM Virtualization extensions", + "This test checks if SVM is set up correctly"); + + if (!cpu_has_svm()) + report_result("virt", INFO, "Processor does not support Virtualization extensions", NULL, NULL); + else + if (vt_locked_by_bios()) + report_result("virt", FAIL, "Virtualization extensions supported but disabled by BIOS", NULL, NULL); + + finish_test("virt"); + return EXIT_SUCCESS; +} + + + Index: linuxfirmwarekit/virt/Makefile =================================================================== --- linuxfirmwarekit/virt/Makefile (revision 218) +++ linuxfirmwarekit/virt/Makefile (revision 257) @@ -4,8 +4,8 @@ all: virt.exe -virt.exe: virt.o .depend - gcc virt.o $(LDFLAGS) -o virt.exe +virt.exe: virt.o virt_vmx.o virt_svm.o .depend + gcc virt.o virt_vmx.o virt_svm.o $(LDFLAGS) -o virt.exe cp virt.exe ../plugins clean: Index: linuxfirmwarekit/acpiinfo/Makefile =================================================================== --- linuxfirmwarekit/acpiinfo/Makefile (revision 218) +++ linuxfirmwarekit/acpiinfo/Makefile (revision 257) @@ -5,7 +5,7 @@ all: acpiinfo.so acpiinfo.so: acpiinfo.o .depend - gcc --shared acpiinfo.o $(LDFLAGS) -o acpiinfo.so + gcc -shared acpiinfo.o $(LDFLAGS) -o acpiinfo.so cp acpiinfo.so ../plugins clean: Index: linuxfirmwarekit/maxreadreq/maxreadreq.c =================================================================== --- linuxfirmwarekit/maxreadreq/maxreadreq.c (revision 218) +++ linuxfirmwarekit/maxreadreq/maxreadreq.c (revision 257) @@ -61,25 +61,20 @@ FILE *file; char current_type[512]; char current_device[512]; + char *lspci_cmd; struct stat buffer; memset(current_type, 0, 512); memset(current_device, 0, 512); start_test("maxreadreq", "PCI Express MaxReadReq tuning", "This test checks if the firmware has set MaxReadReq to a higher value on non-montherboard devices"); - - /* Check if lspci command exists */ - if(stat("/sbin/lspci", &buffer) != 0) { + + lspci_cmd = get_relative_command ("lspci", " -vvv"); - report_result("maxreadreq", FAIL, "Cannot find lspci command", - "/sbin/lspci", NULL); - goto finish; - } - - file = popen("/sbin/lspci -vvv", "r"); + file = popen(lspci_cmd, "r"); if (!file) { report_result("maxreadreq", FAIL, "Cannot execute lspci command", - "/sbin/lspci -vvv", NULL); + lspci_cmd, NULL); goto finish; } while (!feof(file)) { @@ -91,7 +86,15 @@ break; if (line[0]!=' ' && line[0] != '\t' && strlen(line)>8) { - sprintf(current_device, "pci://00:%s", line, 511); + if (strlen(line) > 500){ + report_result("maxreadreq", WARN, "Too big pci" + "string would overflow" + "current_device buffer", + "Internal plugin, not a firmware" + " bug", current_device); + break; + } + sprintf(current_device, "pci://00:%s", line); current_device[16] = 0; strncpy(current_type, line+8, 511); c = strchr(current_type, ':'); Index: linuxfirmwarekit/_example/Makefile.shelltest =================================================================== --- linuxfirmwarekit/_example/Makefile.shelltest (revision 218) +++ linuxfirmwarekit/_example/Makefile.shelltest (revision 257) @@ -1,25 +0,0 @@ -override CFLAGS += -I.. `pkg-config --cflags glib-2.0` -LDFLAGS = `pkg-config --libs glib-2.0` -L.. -lstandalone - -SCRIPTS = test.sh - -all: install - -install: - chmod a+x $(SCRIPTS) - cp -a $(SCRIPTS) ../plugins - -clean: - rm -rf *~ *.o - -# most of the makefile remains as it was before. -# at the bottom, we add these lines: - -# rule for building dependency lists, and writing them to a file -# named ".depend". -.depend: - rm -f .depend - gccmakedep -f- -- $(CFLAGS) -- *.c > .depend - -# now add a line to include the dependency list. -include .depend Index: linuxfirmwarekit/BUILD =================================================================== --- linuxfirmwarekit/BUILD (revision 218) +++ linuxfirmwarekit/BUILD (revision 257) @@ -3,7 +3,7 @@ BUILD ============================================ -- Compile all code and stand-alone tests +- Compile only all plugins (w/o long kernel downloads or packaging) # make @@ -19,11 +19,15 @@ # make clean +- Clean up all, including initramfs/kernels which will trigger a redownload of the kernels + when you perform 'make iso' or 'make usbiso' + + # make clean_kernels Notes ===== -Root user note: Running with 'root' privileges will provide best results (especially for scripts such as firmwarekit/initramfs/dev.sh, etc.) +Root user note: Running with 'root' privileges is needed for 'make iso' and 'make usbiso' (especially for scripts such as firmwarekit/initramfs/dev.sh, etc.) Proxy note: make sure your proxy is set correctly for wget commands (set variables http_proxy, ftp_proxy, etc.) @@ -32,5 +36,9 @@ For more documentation on running stand-alone tests and creating ISOs, go to Documentation/ . -See 'Documentation/Build.env' to see an example build environment we use (packages, kernel ver, etc.) It is not necessary to duplicate this env., but helpful info when you are buildling. +See 'Documentation/Build.env' to see an example build environment we use (packages, kernel ver, etc.) It is not necessary to duplicate this env., but helpful info when you are building. +See 'Documentation/HOWTO_UbuntuBuildEnvironment.txt for how to set up your build environment on an Ubuntu system. + + +Contributer: Rolla Selbak (rolla.n.selbak@intel.com) Index: linuxfirmwarekit/results/resources.css =================================================================== --- linuxfirmwarekit/results/resources.css (revision 0) +++ linuxfirmwarekit/results/resources.css (revision 257) @@ -0,0 +1,20 @@ +resources { + display: block; + margin: 10px; +} +resource>uri { + display: block; + font: bold medium sans-serif; + background-color: #EEEEEE; + margin-left: 1em; + margin-right: 2em; + padding: 0.2em; +} + +resource>description { + display: block; + white-space: pre; + font: normal medium sans-serif; + margin-left: 3em; + padding: 0.6em; +} Index: linuxfirmwarekit/tonetest/Makefile =================================================================== --- linuxfirmwarekit/tonetest/Makefile (revision 218) +++ linuxfirmwarekit/tonetest/Makefile (revision 257) @@ -5,7 +5,7 @@ all: tonetest.so tonetest.so: tonetest.o .depend - gcc --shared tonetest.o $(LDFLAGS) -o tonetest.so -lnewt + gcc -shared tonetest.o $(LDFLAGS) -o tonetest.so -lnewt cp tonetest.so ../plugins clean: Index: linuxfirmwarekit/cpufreq/cpufreq.c =================================================================== --- linuxfirmwarekit/cpufreq/cpufreq.c (revision 218) +++ linuxfirmwarekit/cpufreq/cpufreq.c (revision 257) @@ -234,7 +234,7 @@ -static unsigned long long get_claimed_hz(int cpunr) +static unsigned long get_claimed_hz(int cpunr) { FILE *file; char path[PATH_MAX]; @@ -303,7 +303,7 @@ topspeed = freqs[i].speed; performedtests++; - report_testrun_progress((100 * performedtests)/totaltests); + report_testrun_progress((75 * performedtests)/totaltests); i++; c = c2; @@ -355,7 +355,7 @@ if (freqs[i].Hz > get_claimed_hz(cpunr) && !warned_PSS) { char outbuf[4096]; warned_PSS = 1; - sprintf(outbuf, "Frequency %i not achievable; _PSS limit of %i in effect?", freqs[i].Hz, get_claimed_hz(cpunr)); + sprintf(outbuf, "Frequency %lu not achievable; _PSS limit of %lu in effect?", freqs[i].Hz, get_claimed_hz(cpunr)); report_result("cpufreq", WARN, outbuf, NULL, NULL); } } @@ -617,7 +617,7 @@ continue; high_perf = get_performance(i); performedtests++; - report_testrun_progress((100 * performedtests)/totaltests); + report_testrun_progress((75 * performedtests)/totaltests); /* now set all the others to low again; sw_any will cause the core in question to now also get the low speed, while hardware max will keep the performance */ @@ -631,7 +631,7 @@ lowest_speed(i); } performedtests++; - report_testrun_progress((100 * performedtests)/totaltests); + report_testrun_progress((75 * performedtests)/totaltests); } if (!once) report_result("cpufreq", PASS, "P-state coordination done by Harware", NULL, NULL); @@ -642,7 +642,7 @@ DIR *dir; struct dirent *entry; - start_test("cpufreq", "CPU frequency scaling tests", + start_test("cpufreq", "CPU frequency scaling tests (1-2 mins)", "For each processor in the system, this test steps through the " "various frequency states (P-states) that the BIOS advertises " "for the processor. For each processor/frequency combination, " @@ -725,6 +725,7 @@ performedtests += 2; } + report_testrun_progress(100); finish_test("cpufreq"); return 0; } Index: linuxfirmwarekit/bashshell/bashshell.c =================================================================== --- linuxfirmwarekit/bashshell/bashshell.c (revision 218) +++ linuxfirmwarekit/bashshell/bashshell.c (revision 257) @@ -46,7 +46,7 @@ static void do_bash(void) { newtSuspend(); - fprintf(stderr,"Bash shell. Type 'exit' to return to the firmware test kit\n"); + fprintf(stdout,"Bash shell. Type 'exit' to return to the firmware test kit\n"); system("/bin/bash"); Index: linuxfirmwarekit/bashshell/Makefile =================================================================== --- linuxfirmwarekit/bashshell/Makefile (revision 218) +++ linuxfirmwarekit/bashshell/Makefile (revision 257) @@ -5,7 +5,7 @@ all: bashshell.so bashshell.so: bashshell.o .depend - gcc --shared bashshell.o $(LDFLAGS) -o bashshell.so -lnewt + gcc -shared bashshell.o $(LDFLAGS) -o bashshell.so -lnewt cp bashshell.so ../plugins clean: Index: linuxfirmwarekit/NEWS =================================================================== --- linuxfirmwarekit/NEWS (revision 218) +++ linuxfirmwarekit/NEWS (revision 257) @@ -1,5 +1,72 @@ + ************************************ LINUX-READY FIRMWARE DEVELOPER KIT +RELEASE 3 + +October 2nd , 2007 +************************************ + +The Linux-ready Firmware Developer Kit team is pleased to announce the +release R3 of the kit. + +The project is fairly stable at this point, but there are still many new, exciting +additions to the kit such as Linux PowerTop 1.8, a tool to monitor power usage, +c-states and p-states. See http://www.linuxpowertop.org/ for more info. + +The default kernels that are tested by the kit are also updated to now include: +kernel.org 2.6.22-9, FC6, Ubuntu 7.04 and Mandriva 2007.1. There are also +changes to make it as simple as possible to build your own customized +firmwarekit to include the kernels _you_ care about. Corresponding documentation +is, of course, included. See 'HOWTO_CustomizeISO.txt' for easy instructions. + +The Linux-ready Firmware Developer Kit is a tool to test how well Linux +works together with the firmware (BIOS or EFI) of your machine, and is +designed for use by both firmware development teams and Linux kernel +hackers to prevent and diagnose firmware bugs. + +Summary +======= + +Enhancements +* Added Ubuntu 7.04 kernel and Mandriva 2007.1 kernel as part of the kernels to test +* Added error log for the plugins' stderr outputs (lfdk.err.log) +* Root 'make' now just strictly compiles the plugins, leaving the downloading and other +tasks to 'make iso'. +* Re-org of extracting acpi tables in a more logical, efficient way (thanks to Thomas Reninger) +* Updated mircocode .dat file +* Versioning is now soft-coded with get_lfdk_ver() instead of hard-coded +* Removed all hard-coded instances of system commands, and instead created get_relative_command() +* Results now strictly in .txt format, removed .xml. +* Bug-fixes and maintenance +* More & updated documentation including: + - HOWTO_CustomizeISO - add your own kernels to the kit for testing + - HOWTO_WritePluginTest - easy steps in how to write your own plugin tests + - Implementaiton seciton of README (finally) - overview of the implementation of the kit + + +New Tests +========= +* Virtualization tests for svm and vmx submitted by Lijo Lazar +* (experimental) DMAR to test the health of the acpi DMAR tables (original patch by Shaohua Li from Intel) +* Linux PowerTop 1.8 +* Added test in pci resource plugin for failure to allocate memory resources (refer to +Linus' comment in http://bugzilla.kernel.org/show_bug.cgi?id=7917) + + +You can download this latest release of the kit from + + http://www.linuxfirmwarekit.org + + +The Linux-ready Firmware Developer Kit team + Jacob Pan + Rolla Selbak + Arjan van de Ven + + + +************************************ +LINUX-READY FIRMWARE DEVELOPER KIT RELEASE 2 April 11th, 2007 Index: linuxfirmwarekit/Makefile =================================================================== --- linuxfirmwarekit/Makefile (revision 218) +++ linuxfirmwarekit/Makefile (revision 257) @@ -4,8 +4,8 @@ LDFLAGS = -nostdlibs -Linitramfs/data/lib -Linitramfs/data/usr/lib -export-dynamic -lc -ldl `pkg-config --libs glib-2.0` -lnewt -lslang -SUBDIRS = acpiinfo pciresource acpicompile cpufreq ethernet edd battery msrpoke pcipoke usbports tonetest bashshell mcfg lmbench mtrr shelltools fan fadt chk_hpet suspend thermal_trip microcode dmi os2gap apicedge maxreadreq virt ebda SUN -LIBS = dmesg.o main.o tests.o plugins.o ui.o uri.o dumpxml.o usb.o serial.o lib.o acpitable.o dsdt.o e820.o ssh.o +SUBDIRS = acpiinfo pciresource acpicompile cpufreq ethernet edd battery msrpoke pcipoke usbports tonetest bashshell powertop lmbench mtrr shelltools fan chk_hpet suspend thermal_trip microcode dmi os2gap apicedge maxreadreq virt ebda SUN dmar +LIBS = dmesg.o main.o tests.o plugins.o ui.o uri.o dumpresults.o usb.o serial.o lib.o acpitable.o dsdt.o e820.o ssh.o all: libstandalone.so biostest subdirs @@ -22,16 +22,16 @@ $(SUBDIRS): $(MAKE) -C $@ - cd initramfs/kernel ; make biostest: $(LIBS) biostest.h .depend $(LIBC) gcc $(LIBS) $(LDFLAGS) -o biostest initramfs/data/usr/lib/libc.so: - cd initramfs ; sh create_initramfs.sh + mkdir -p initramfs/data/usr/lib + cp initramfs/libc.so initramfs/data/usr/lib/libc.so -libstandalone.so: $(LIBS) biostest.h .depend libstandalone.o - gcc --shared libstandalone.o lib.o -o libstandalone.so +libstandalone.so: $(LIBS) biostest.h .depend libstandalone.o + gcc --shared libstandalone.o lib.o acpitable.o e820.o -Wl,-soname=libstandalone.so -o libstandalone.so clean: rm -f biostest @@ -39,23 +39,31 @@ rm -f firmwarekit-source.iso rm -f libstandalone.so for i in $(SUBDIRS) ; do make -C $$i clean; done - rm -f results.xml + rm -f results.txt rm -f resources.xml + rm -f mountlog + rm -rf plugins/* + rm -rf results/*.xml results/*.txt + rm -f lfdk.err.log rm -rf *.dsl *.dat *.asl *.aml acpi.dump - rm -f initramfs/rpms/pci.ids - rm -f initramfs/rpms/kernels rm -rf *~ *.o .depend */.depend +clean_kernels: clean + rm -rf initramfs/data + cd initramfs/rpms ; make clean + cd initramfs/srpms ; make clean + cd initramfs/kernel ; make clean + install: all - mkdir results || : cp -a biostest results plugins initramfs/data/root/ cp -a libstandalone.so initramfs/data/usr/lib cd shelltools ; make DESTDIR=../initramfs/data install iso: all + cd initramfs/kernel ; make cd initramfs ; sh create_initramfs.sh - mkdir results || : - cp -a biostest results plugins initramfs/data/root/ + cp -a biostest results plugins initramfs/data/root/ + cp -a version initramfs/data/root/ cp -a libstandalone.so initramfs/data/usr/lib cd shelltools ; make DESTDIR=../initramfs/data install cd initramfs ; sh makeisos.sh Index: linuxfirmwarekit/fadt/fadt.h =================================================================== --- linuxfirmwarekit/fadt/fadt.h (revision 218) +++ linuxfirmwarekit/fadt/fadt.h (revision 257) @@ -1,169 +0,0 @@ -/****************************************************************************** - * - * Name: actbl.h - Basic ACPI Table Definitions - * - *****************************************************************************/ - -/* - * Copyright (C) 2000 - 2006, R. Byron Moore - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions, and the following disclaimer, - * without modification. - * 2. Redistributions in binary form must reproduce at minimum a disclaimer - * substantially similar to the "NO WARRANTY" disclaimer below - * ("Disclaimer") and any redistribution must be conditioned upon - * including a substantially similar Disclaimer requirement for further - * binary redistribution. - * 3. Neither the names of the above-listed copyright holders nor the names - * of any contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * Alternatively, this software may be distributed under the terms of the - * GNU General Public License ("GPL") version 2 as published by the Free - * Software Foundation. - * - * NO WARRANTY - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGES. - */ -#pragma pack(1) -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned int u32; -typedef unsigned long long u64; -/******************************************************************************* - * - * ACPI Table Header. This common header is used by all tables except the - * RSDP and FACS. The define is used for direct inclusion of header into - * other ACPI tables - * - ******************************************************************************/ - -#define ACPI_TABLE_HEADER_DEF \ - char signature[4]; /* ASCII table signature */\ - u32 length; /* Length of table in bytes, including this header */\ - u8 revision; /* ACPI Specification minor version # */\ - u8 checksum; /* To make sum of entire table == 0 */\ - char oem_id[6]; /* ASCII OEM identification */\ - char oem_table_id[8]; /* ASCII OEM table identification */\ - u32 oem_revision; /* OEM revision number */\ - char asl_compiler_id[4]; /* ASCII ASL compiler vendor ID */\ - u32 asl_compiler_revision; /* ASL compiler version */ - -struct acpi_table_header { -ACPI_TABLE_HEADER_DEF}; - -/* - * GAS - Generic Address Structure (ACPI 2.0+) - */ -struct acpi_generic_address { - u8 address_space_id; /* Address space where struct or register exists */ - u8 register_bit_width; /* Size in bits of given register */ - u8 register_bit_offset; /* Bit offset within the register */ - u8 access_width; /* Minimum Access size (ACPI 3.0) */ - u64 address; /* 64-bit address of struct or register */ -}; - -/* Fields common to all versions of the FADT */ - -#define ACPI_FADT_COMMON \ - ACPI_TABLE_HEADER_DEF \ - u32 V1_firmware_ctrl; /* 32-bit physical address of FACS */ \ - u32 V1_dsdt; /* 32-bit physical address of DSDT */ \ - u8 reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/ \ - u8 prefer_PM_profile; /* Conveys preferred power management profile to OSPM. */ \ - u16 sci_int; /* System vector of SCI interrupt */ \ - u32 smi_cmd; /* Port address of SMI command port */ \ - u8 acpi_enable; /* Value to write to smi_cmd to enable ACPI */ \ - u8 acpi_disable; /* Value to write to smi_cmd to disable ACPI */ \ - u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */ \ - u8 pstate_cnt; /* Processor performance state control*/ \ - u32 V1_pm1a_evt_blk; /* Port address of Power Mgt 1a Event Reg Blk */ \ - u32 V1_pm1b_evt_blk; /* Port address of Power Mgt 1b Event Reg Blk */ \ - u32 V1_pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */ \ - u32 V1_pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */ \ - u32 V1_pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */ \ - u32 V1_pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ \ - u32 V1_gpe0_blk; /* Port addr of General Purpose acpi_event 0 Reg Blk */ \ - u32 V1_gpe1_blk; /* Port addr of General Purpose acpi_event 1 Reg Blk */ \ - u8 pm1_evt_len; /* Byte Length of ports at pm1_x_evt_blk */ \ - u8 pm1_cnt_len; /* Byte Length of ports at pm1_x_cnt_blk */ \ - u8 pm2_cnt_len; /* Byte Length of ports at pm2_cnt_blk */ \ - u8 pm_tm_len; /* Byte Length of ports at pm_tm_blk */ \ - u8 gpe0_blk_len; /* Byte Length of ports at gpe0_blk */ \ - u8 gpe1_blk_len; /* Byte Length of ports at gpe1_blk */ \ - u8 gpe1_base; /* Offset in gpe model where gpe1 events start */ \ - u8 cst_cnt; /* Support for the _CST object and C States change notification.*/ \ - u16 plvl2_lat; /* Worst case HW latency to enter/exit C2 state */ \ - u16 plvl3_lat; /* Worst case HW latency to enter/exit C3 state */ \ - u16 flush_size; /* Processor's memory cache line width, in bytes */ \ - u16 flush_stride; /* Number of flush strides that need to be read */ \ - u8 duty_offset; /* Processor's duty cycle index in processor's P_CNT reg*/ \ - u8 duty_width; /* Processor's duty cycle value bit width in P_CNT register.*/ \ - u8 day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */ \ - u8 mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */ \ - u8 century; /* Index to century in RTC CMOS RAM */ \ - u16 iapc_boot_arch; /* IA-PC Boot Architecture Flags. See Table 5-10 for description*/ \ - u8 reserved2; /* Reserved, must be zero */ - -/******************************************************************************* - * - * RSDP - Root System Description Pointer (Signature is "RSD PTR ") - * - ******************************************************************************/ -struct fadt_descriptor { - ACPI_FADT_COMMON - /* Flags (32 bits) */ - u8 wb_invd:1; /* 00: The wbinvd instruction works properly */ - u8 wb_invd_flush:1; /* 01: The wbinvd flushes but does not invalidate */ - u8 proc_c1:1; /* 02: All processors support C1 state */ - u8 plvl2_up:1; /* 03: C2 state works on MP system */ - u8 pwr_button:1; /* 04: Power button is handled as a generic feature */ - u8 sleep_button:1; /* 05: Sleep button is handled as a generic feature, or not present */ - u8 fixed_rTC:1; /* 06: RTC wakeup stat not in fixed register space */ - u8 rtcs4:1; /* 07: RTC wakeup stat not possible from S4 */ - u8 tmr_val_ext:1; /* 08: tmr_val is 32 bits 0=24-bits */ - u8 dock_cap:1; /* 09: Docking supported */ - u8 reset_reg_sup:1; /* 10: System reset via the FADT RESET_REG supported */ - u8 sealed_case:1; /* 11: No internal expansion capabilities and case is sealed */ - u8 headless:1; /* 12: No local video capabilities or local input devices */ - u8 cpu_sw_sleep:1; /* 13: Must execute native instruction after writing SLP_TYPx register */ - - u8 pci_exp_wak:1; /* 14: System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */ - u8 use_platform_clock:1; /* 15: OSPM should use platform-provided timer (ACPI 3.0) */ - u8 S4rtc_sts_valid:1; /* 16: Contents of RTC_STS valid after S4 wake (ACPI 3.0) */ - u8 remote_power_on_capable:1; /* 17: System is compatible with remote power on (ACPI 3.0) */ - u8 force_apic_cluster_model:1; /* 18: All local APICs must use cluster model (ACPI 3.0) */ - u8 force_apic_physical_destination_mode:1; /* 19: All local x_aPICs must use physical dest mode (ACPI 3.0) */ - u8:4; /* 20-23: Reserved, must be zero */ - u8 reserved3; /* 24-31: Reserved, must be zero */ - - struct acpi_generic_address reset_register; /* Reset register address in GAS format */ - u8 reset_value; /* Value to write to the reset_register port to reset the system */ - u8 reserved4[3]; /* These three bytes must be zero */ - u64 xfirmware_ctrl; /* 64-bit physical address of FACS */ - u64 Xdsdt; /* 64-bit physical address of DSDT */ - struct acpi_generic_address xpm1a_evt_blk; /* Extended Power Mgt 1a acpi_event Reg Blk address */ - struct acpi_generic_address xpm1b_evt_blk; /* Extended Power Mgt 1b acpi_event Reg Blk address */ - struct acpi_generic_address xpm1a_cnt_blk; /* Extended Power Mgt 1a Control Reg Blk address */ - struct acpi_generic_address xpm1b_cnt_blk; /* Extended Power Mgt 1b Control Reg Blk address */ - struct acpi_generic_address xpm2_cnt_blk; /* Extended Power Mgt 2 Control Reg Blk address */ - struct acpi_generic_address xpm_tmr_blk; /* Extended Power Mgt Timer Ctrl Reg Blk address */ - struct acpi_generic_address xgpe0_blk; /* Extended General Purpose acpi_event 0 Reg Blk address */ - struct acpi_generic_address xgpe1_blk; /* Extended General Purpose acpi_event 1 Reg Blk address */ -}; -#pragma pack() Index: linuxfirmwarekit/fadt/fadt.c =================================================================== --- linuxfirmwarekit/fadt/fadt.c (revision 218) +++ linuxfirmwarekit/fadt/fadt.c (revision 257) @@ -37,14 +37,15 @@ #include #include "../biostest.h" +#include "acpitable.h" #include #include #include #include -#include "fadt.h" #include +#if 0 #define CHECK_FIELD(field) \ if (table32->field != table64->field) { \ sprintf(line, "FADT field " #field " has value %x in the 32 bit table and value %x in the 64 bit table.", table32->field, table64->field); \ @@ -109,13 +110,14 @@ CHECK_FIELD(iapc_boot_arch); } +#endif void do_manual_fadt_test(void) { unsigned long address; unsigned long size; char *table_ptr, *table_page; - struct fadt_descriptor *table; + struct fadt_descriptor_rev2 *table; start_test("FADT", "FADT test", "verify FADT SCI_EN bit enabled or NOT."); @@ -129,8 +131,8 @@ report_result("FADT", WARN, "No FADT ACPI table found.", NULL, NULL); goto out; } - table_page = table_ptr = copy_acpi_table(address, "FACP"); - table = (struct fadt_descriptor *) table_ptr; + table_page = table_ptr = address; + table = (struct fadt_descriptor_rev2 *) table_ptr; { unsigned int value,port,width; char line[4096]; @@ -172,16 +174,15 @@ report_result("FADT", FAIL, "Legacy mode, SCI_EN bit in PM1a_Control register is incorrectly Disabled",NULL,NULL); } - +#if 0 compare_32_and_64_fadt(); +#endif + out: finish_test("FADT"); } void run_test(void) { - if (safe_mode) - register_interactive_test("FADT test", do_manual_fadt_test); - else - do_manual_fadt_test(); + register_interactive_test("FADT test", do_manual_fadt_test); } Index: linuxfirmwarekit/fadt/Makefile =================================================================== --- linuxfirmwarekit/fadt/Makefile (revision 218) +++ linuxfirmwarekit/fadt/Makefile (revision 257) @@ -5,7 +5,7 @@ all: fadt.so fadt.so: fadt.o .depend - gcc --shared fadt.o $(LDFLAGS) -o fadt.so + gcc -shared fadt.o $(LDFLAGS) -o fadt.so cp fadt.so ../plugins clean: Index: linuxfirmwarekit/ethernet/ethernet.c =================================================================== --- linuxfirmwarekit/ethernet/ethernet.c (revision 218) +++ linuxfirmwarekit/ethernet/ethernet.c (revision 257) @@ -60,15 +60,21 @@ { FILE *file; int success = 0; + char *dhclient_cmd; char command[4096]; char *details = strdup(""); + /* Get dhclient command */ + dhclient_cmd = get_relative_command ("dhclient", NULL); + unlink("/var/run/dhclient.pid"); - sprintf(command, "/sbin/dhclient %s &> /tmp/dhclient", iface); + sprintf(command, "%s %s 2> /tmp/dhclient", dhclient_cmd, iface); system(command); file = fopen("/tmp/dhclient", "r"); - if (!file) + if (!file) { + fprintf(stderr, "WARN: could not read /tmp/dhclient.\n"); return; + } while (!feof(file)) { char line[4096]; memset(line, 0, 4096); Index: linuxfirmwarekit/pciresource/pciresource.c =================================================================== --- linuxfirmwarekit/pciresource/pciresource.c (revision 218) +++ linuxfirmwarekit/pciresource/pciresource.c (revision 257) @@ -87,7 +87,7 @@ report_result("pciresource", FAIL, summary, line, uri); } -static void process_alloc_failure(char *line) +static void process_alloc_region_failure(char *line) { char *pci; @@ -95,11 +95,34 @@ char uri[1024]; pci = strstr(line, " of device "); - if (pci==NULL) - return; /* malformed */ + if (pci==NULL) { + pci = strstr(line, " of bridge "); + if (pci==NULL) + return; /* malformed */ + } + pci+=11; + chop_newline(pci); + sprintf(summary, "Device %s has incorrect resources", pci); + sprintf(uri,"pci://%s", pci); + + report_result("pciresource", FAIL, summary, line, uri); +} +static void process_alloc_mem_failure(char *line) +{ + char *pci; + + char summary[1024]; + char uri[1024]; + + pci = strstr(line, " for "); + if (pci==NULL) + return; /* malformed */ + pci+=5; + chop_newline(pci); + sprintf(summary, "Device %s has incorrect resources", pci); sprintf(uri,"pci://%s", pci); @@ -119,11 +142,13 @@ pci+=12; - sprintf(summary, "Resources for device %s couldn't be reserved.", pci); + sprintf(summary, "Memory resource for device %s couldn't be reserved.", pci); sprintf(uri,"pci://%s", pci); report_result("pciresource", FAIL, summary, line, uri); } + +/* Checks the dmesg output for pci errors */ static void check_line(gpointer data, gpointer user_data) { char *line = (char *)data; @@ -131,33 +156,42 @@ if (strstr(line, "PCI: Ignore bogus resource")!=NULL) process_failure(line); if (strstr(line, "PCI: Cannot allocate resource region")!=NULL) - process_alloc_failure(line); + process_alloc_region_failure(line); if (strstr(line, "hpet_resources:") && strstr(line,"is busy")) report_result("pciresource", FAIL, "HPET resources incorrect", line, NULL); if (strstr(line, "PCI: Unable to reserve mem region") && strstr(line,"for device")) process_unable_reserve(line); + if (strstr(line, "PCI: Failed to allocate mem resource")!=NULL) + process_alloc_mem_failure(line); } extern void gather_pci_info(void); - +/* Go through 'lspci -v' output and check for invalid pci device resource size. + Also, add all the pci devices to our GList pci_resources list. */ static void check_resource_size(void) { char current_device[4096]; char line[4096]; char uri[4095]; char *c; + char *lspci_cmd; FILE *file; memset(current_device, 0, 4096); - file = popen("/sbin/lspci -v", "r"); + lspci_cmd = get_relative_command ("lspci", " -v"); + file = popen(lspci_cmd, "r"); + if (!file) + return; + while (!feof(file)) { char *c2, *c3; char hexaddress[20]; int maybehex=0; + /* Get current device */ if (fgets(line, 4095, file)==NULL) break; if (line[0] != ' ' && line[0] != '\t') { @@ -208,6 +242,8 @@ sprintf("Device %s has invalid resource size %i", current_device, value); report_result("pciresource", FAIL, output, NULL, uri); } + + /* Add this pci device to our glist of resources */ res = malloc(sizeof(struct pci_resource)); if (res && strlen(hexaddress)>2) { memset(res, 0, sizeof(struct pci_resource)); Index: linuxfirmwarekit/pciresource/pciinfo.c =================================================================== --- linuxfirmwarekit/pciresource/pciinfo.c (revision 218) +++ linuxfirmwarekit/pciresource/pciinfo.c (revision 257) @@ -29,18 +29,22 @@ #include "../biostest.h" +/* Run 'lspci -vxxx' and parse it so we can announce each PCI device + and its information as a resource (i.e. in the resource list) */ void gather_pci_info(void) { FILE *file; char line[4096]; char pciuri[1024]; - char *thisfield = strdup("");; + char *thisfield = strdup(""); + char *lspci_cmd; int config = 0; memset(pciuri, 0, 1024); - file = popen("/sbin/lspci -vxxx", "r"); + lspci_cmd = get_relative_command ("lspci", " -vxxx"); + file = popen(lspci_cmd, "r"); if (!file) return; @@ -80,6 +84,9 @@ thisfield = scatprintf(thisfield, "%s", c); } } + + /* Announcing the PCI device as a resource pci://0000: then + the information and values from lspci -vxxx */ if (strlen(thisfield)>2) announce_resource(pciuri, thisfield, NULL); } Index: linuxfirmwarekit/pciresource/Makefile =================================================================== --- linuxfirmwarekit/pciresource/Makefile (revision 218) +++ linuxfirmwarekit/pciresource/Makefile (revision 257) @@ -5,7 +5,7 @@ all: pciresource.so pciresource.so: pciresource.o pciinfo.o resourcedb.o .depend - gcc --shared pciresource.o pciinfo.o resourcedb.o $(LDFLAGS) -o pciresource.so + gcc -shared pciresource.o pciinfo.o resourcedb.o $(LDFLAGS) -o pciresource.so cp resourcedb.txt pciresource.so ../plugins clean: Index: linuxfirmwarekit/pciresource/resourcedb.c =================================================================== --- linuxfirmwarekit/pciresource/resourcedb.c (revision 218) +++ linuxfirmwarekit/pciresource/resourcedb.c (revision 257) @@ -124,6 +124,7 @@ char line[4096]; char uri[4095]; char *c; + char *lspci_cmd; FILE *file; if (sizes==NULL) @@ -131,7 +132,9 @@ memset(current_device, 0, 4096); - file = popen("/sbin/lspci -v -n", "r"); + lspci_cmd = get_relative_command ("lspci", " -v -n"); + file = popen(lspci_cmd, "r"); + while (!feof(file)) { char *c2, *c3; char devid[14]; Index: linuxfirmwarekit/initramfs/results.css =================================================================== --- linuxfirmwarekit/initramfs/results.css (revision 218) +++ linuxfirmwarekit/initramfs/results.css (revision 257) @@ -1,51 +0,0 @@ -results { - display: block; - margin: 10px; -} -test { - display: block; - padding: 0.3em; -} -test>name { - display: block; - padding: 0.3em; - font: bold x-large sans-serif; - color: white; - background-color: #BBBBFF; -} -test>description { - display: block; - padding: 0.3em; - margin-left: 2em; - margin-right: 2em; -} -id { - display: none; -} -result { - display: none; -} -detail { - display: block; - font: bold medium sans-serif; - margin-left: 2.5em; - margin-right: 2em; - padding: 0.2em; -} - -test>detail>summary { - display: block; - background-color: #DDDDDD; -} - -test>detail>uri { - display: none; -} -test>detail>data { - display: block; - white-space: pre; - font: normal medium sans-serif; - background-color: #EEEEEE; - margin-left: 2em; - padding: 0.6em; -} Index: linuxfirmwarekit/initramfs/resources.css =================================================================== --- linuxfirmwarekit/initramfs/resources.css (revision 218) +++ linuxfirmwarekit/initramfs/resources.css (revision 257) @@ -1,20 +0,0 @@ -resources { - display: block; - margin: 10px; -} -resource>uri { - display: block; - font: bold medium sans-serif; - background-color: #EEEEEE; - margin-left: 1em; - margin-right: 2em; - padding: 0.2em; -} - -resource>description { - display: block; - white-space: pre; - font: normal medium sans-serif; - margin-left: 3em; - padding: 0.6em; -} Index: linuxfirmwarekit/initramfs/kernel/Makefile =================================================================== --- linuxfirmwarekit/initramfs/kernel/Makefile (revision 218) +++ linuxfirmwarekit/initramfs/kernel/Makefile (revision 257) @@ -1,15 +1,13 @@ -kernel=2.6.20 -patch=patch-2.6.19-rc6.bz2 +kernel=2.6.22.9 all: bzImage -bzImage: linux-$(kernel).tar.bz2 $(patch) Makefile +bzImage: linux-$(kernel).tar.bz2 Makefile # if arch is i*86 (i386, i686, etc.) ifeq ($(shell uname -m | cut -c1,3,4), i86) tar -jxf linux-$(kernel).tar.bz2 cp ../kernel.config linux-$(kernel)/.config -# cd linux-$(kernel) ; bzcat ../$(patch) | patch -p1 cd linux-$(kernel) ; make ARCH=i386 oldconfig ; make ARCH=i386 -s -j8 bzImage cp linux-$(kernel)/arch/i386/boot/bzImage . cp bzImage ../cdimage/isolinux/vmlinuz @@ -21,10 +19,6 @@ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-$(kernel).tar.bz2 cp linux-$(kernel).tar.bz2 ../srpms/ -$(patch): - wget http://www.kernel.org/pub/linux/kernel/v2.6/testing/$(patch) - cp $(patch) ../srpms/ - clean: rm -rf *~ *.o rm -rf bzImage linux-$(kernel)* Index: linuxfirmwarekit/initramfs/rpms/Makefile =================================================================== --- linuxfirmwarekit/initramfs/rpms/Makefile (revision 218) +++ linuxfirmwarekit/initramfs/rpms/Makefile (revision 257) @@ -24,10 +24,17 @@ wget http://pciids.sourceforge.net/pci.ids microcode.dat: - wget http://www.urbanmyth.org/microcode/ucode/intel-ia32microcode-07Sep2006.txt.bz2 - bunzip2 intel-ia32microcode-07Sep2006.txt.bz2 - mv intel-ia32microcode-07Sep2006.txt microcode.dat + wget http://www.urbanmyth.org/microcode/ucode/microcode-20070907.dat.bz2 + bunzip2 microcode-20070907.dat.bz2 + mv microcode-20070907.dat microcode.dat kernels: - for i in `cat ../kernels | cut -f4`; do wget $$i ; done - touch kernels \ No newline at end of file + for i in `cat ../kernels | cut -f4`; do wget -nc $$i ; done + touch kernels + +clean: + rm -rf *.rpm + rm -rf *.deb + rm -rf pci.ids + rm -rf microcode.dat + rm -rf kernels Index: linuxfirmwarekit/initramfs/kernel.config =================================================================== --- linuxfirmwarekit/initramfs/kernel.config (revision 218) +++ linuxfirmwarekit/initramfs/kernel.config (revision 257) @@ -1,15 +1,20 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.20 -# Thu Feb 22 16:02:02 2007 +# Linux kernel version: 2.6.22.9 +# Fri Sep 28 18:56:34 2007 # CONFIG_X86_32=y CONFIG_GENERIC_TIME=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y CONFIG_LOCKDEP_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_X86=y CONFIG_MMU=y +CONFIG_ZONE_DMA=y +CONFIG_QUICKLIST=y CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_IOMAP=y CONFIG_GENERIC_BUG=y @@ -33,16 +38,20 @@ CONFIG_SWAP=y CONFIG_SYSVIPC=y # CONFIG_IPC_NS is not set +CONFIG_SYSVIPC_SYSCTL=y CONFIG_POSIX_MQUEUE=y CONFIG_BSD_PROCESS_ACCT=y # CONFIG_BSD_PROCESS_ACCT_V3 is not set # CONFIG_TASKSTATS is not set # CONFIG_UTS_NS is not set # CONFIG_AUDIT is not set -# CONFIG_IKCONFIG is not set +CONFIG_IKCONFIG=y +# CONFIG_IKCONFIG_PROC is not set +CONFIG_LOG_BUF_SHIFT=17 # CONFIG_CPUSETS is not set CONFIG_SYSFS_DEPRECATED=y # CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y CONFIG_INITRAMFS_SOURCE="" # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y @@ -58,14 +67,18 @@ CONFIG_ELF_CORE=y CONFIG_BASE_FULL=y CONFIG_FUTEX=y +CONFIG_ANON_INODES=y CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_EVENTFD=y CONFIG_SHMEM=y -CONFIG_SLAB=y CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLAB=y +# CONFIG_SLUB is not set +# CONFIG_SLOB is not set CONFIG_RT_MUTEXES=y # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 -# CONFIG_SLOB is not set # # Loadable module support @@ -101,6 +114,9 @@ # # Processor type and features # +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y CONFIG_SMP=y CONFIG_X86_PC=y # CONFIG_X86_ELAN is not set @@ -135,10 +151,11 @@ # CONFIG_MGEODE_LX is not set # CONFIG_MCYRIXIII is not set # CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set CONFIG_X86_GENERIC=y CONFIG_X86_CMPXCHG=y -CONFIG_X86_XADD=y CONFIG_X86_L1_CACHE_SHIFT=7 +CONFIG_X86_XADD=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y # CONFIG_ARCH_HAS_ILOG2_U32 is not set # CONFIG_ARCH_HAS_ILOG2_U64 is not set @@ -148,11 +165,12 @@ CONFIG_X86_INVLPG=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y -CONFIG_X86_CMPXCHG64=y CONFIG_X86_GOOD_APIC=y CONFIG_X86_INTEL_USERCOPY=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_X86_TSC=y +CONFIG_X86_CMOV=y +CONFIG_X86_MINIMUM_CPU_MODEL=4 CONFIG_HPET_TIMER=y CONFIG_HPET_EMULATE_RTC=y CONFIG_NR_CPUS=32 @@ -200,6 +218,8 @@ CONFIG_SPARSEMEM_STATIC=y CONFIG_SPLIT_PTLOCK_CPUS=4 # CONFIG_RESOURCES_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_NR_QUICK=1 CONFIG_HIGHPTE=y # CONFIG_MATH_EMULATION is not set CONFIG_MTRR=y @@ -227,7 +247,8 @@ CONFIG_PM_LEGACY=y # CONFIG_PM_DEBUG is not set # CONFIG_PM_SYSFS_DEPRECATED is not set -# CONFIG_SOFTWARE_SUSPEND is not set +CONFIG_SOFTWARE_SUSPEND=y +CONFIG_PM_STD_PARTITION="" CONFIG_SUSPEND_SMP=y # @@ -237,18 +258,18 @@ CONFIG_ACPI_SLEEP=y CONFIG_ACPI_SLEEP_PROC_FS=y CONFIG_ACPI_SLEEP_PROC_SLEEP=y +CONFIG_ACPI_PROCFS=y CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y CONFIG_ACPI_BUTTON=y -CONFIG_ACPI_VIDEO=y -CONFIG_ACPI_HOTKEY=y +CONFIG_ACPI_VIDEO=m CONFIG_ACPI_FAN=y CONFIG_ACPI_DOCK=y +# CONFIG_ACPI_BAY is not set CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_HOTPLUG_CPU=y CONFIG_ACPI_THERMAL=y CONFIG_ACPI_ASUS=m -CONFIG_ACPI_IBM=m CONFIG_ACPI_TOSHIBA=m CONFIG_ACPI_BLACKLIST_YEAR=2001 CONFIG_ACPI_DEBUG=y @@ -258,16 +279,11 @@ CONFIG_X86_PM_TIMER=y CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_SBS=y - -# -# APM (Advanced Power Management) BIOS Support -# CONFIG_APM=y # CONFIG_APM_IGNORE_USER_SUSPEND is not set # CONFIG_APM_DO_ENABLE is not set CONFIG_APM_CPU_IDLE=y # CONFIG_APM_DISPLAY_BLANK is not set -CONFIG_APM_RTC_IS_GMT=y # CONFIG_APM_ALLOW_INTS is not set # CONFIG_APM_REAL_MODE_POWER_OFF is not set @@ -306,6 +322,7 @@ # CONFIG_X86_CPUFREQ_NFORCE2 is not set # CONFIG_X86_LONGRUN is not set # CONFIG_X86_LONGHAUL is not set +# CONFIG_X86_E_POWERSAVER is not set # # shared options @@ -329,6 +346,7 @@ CONFIG_HOTPLUG_PCI_PCIE=y # CONFIG_HOTPLUG_PCI_PCIE_POLL_EVENT_MODE is not set CONFIG_PCIEAER=y +CONFIG_ARCH_SUPPORTS_MSI=y CONFIG_PCI_MSI=y # CONFIG_PCI_DEBUG is not set # CONFIG_HT_IRQ is not set @@ -364,10 +382,6 @@ CONFIG_TCIC=m CONFIG_PCMCIA_PROBE=y CONFIG_PCCARD_NONSTATIC=m - -# -# PCI Hotplug Support -# CONFIG_HOTPLUG_PCI=y # CONFIG_HOTPLUG_PCI_FAKE is not set # CONFIG_HOTPLUG_PCI_COMPAQ is not set @@ -392,14 +406,15 @@ # # Networking options # -# CONFIG_NETDEBUG is not set CONFIG_PACKET=y CONFIG_PACKET_MMAP=y CONFIG_UNIX=y CONFIG_XFRM=y CONFIG_XFRM_USER=y # CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set CONFIG_NET_KEY=m +# CONFIG_NET_KEY_MIGRATE is not set CONFIG_INET=y CONFIG_IP_MULTICAST=y CONFIG_IP_ADVANCED_ROUTER=y @@ -433,10 +448,6 @@ CONFIG_TCP_CONG_CUBIC=y CONFIG_DEFAULT_TCP_CONG="cubic" # CONFIG_TCP_MD5SIG is not set - -# -# IP: Virtual Server Configuration -# CONFIG_IP_VS=m # CONFIG_IP_VS_DEBUG is not set CONFIG_IP_VS_TAB_BITS=12 @@ -470,6 +481,7 @@ CONFIG_IPV6=m CONFIG_IPV6_PRIVACY=y # CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set CONFIG_INET6_AH=m CONFIG_INET6_ESP=m CONFIG_INET6_IPCOMP=m @@ -496,17 +508,21 @@ CONFIG_NETFILTER_NETLINK_QUEUE=m CONFIG_NETFILTER_NETLINK_LOG=m # CONFIG_NF_CONNTRACK_ENABLED is not set +# CONFIG_NF_CONNTRACK is not set # CONFIG_NETFILTER_XTABLES is not set # # IP: Netfilter Configuration # CONFIG_IP_NF_QUEUE=m +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_ARPTABLES is not set # # IPv6: Netfilter Configuration (EXPERIMENTAL) # CONFIG_IP6_NF_QUEUE=m +# CONFIG_IP6_NF_IPTABLES is not set # # Bridge: Netfilter Configuration @@ -531,10 +547,6 @@ CONFIG_BRIDGE_EBT_SNAT=m CONFIG_BRIDGE_EBT_LOG=m CONFIG_BRIDGE_EBT_ULOG=m - -# -# DCCP Configuration (EXPERIMENTAL) -# CONFIG_IP_DCCP=m CONFIG_INET_DCCP_DIAG=m @@ -552,20 +564,12 @@ # # CONFIG_IP_DCCP_DEBUG is not set # CONFIG_NET_DCCPPROBE is not set - -# -# SCTP Configuration (EXPERIMENTAL) -# CONFIG_IP_SCTP=m # CONFIG_SCTP_DBG_MSG is not set # CONFIG_SCTP_DBG_OBJCNT is not set # CONFIG_SCTP_HMAC_NONE is not set # CONFIG_SCTP_HMAC_SHA1 is not set CONFIG_SCTP_HMAC_MD5=y - -# -# TIPC Configuration (EXPERIMENTAL) -# # CONFIG_TIPC is not set CONFIG_ATM=m CONFIG_ATM_CLIP=m @@ -600,9 +604,6 @@ # CONFIG_NET_SCHED=y CONFIG_NET_SCH_FIFO=y -CONFIG_NET_SCH_CLK_JIFFIES=y -# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set -# CONFIG_NET_SCH_CLK_CPU is not set # # Queueing/Scheduling @@ -655,6 +656,15 @@ # CONFIG_HAMRADIO is not set # CONFIG_IRDA is not set # CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +CONFIG_FIB_RULES=y + +# +# Wireless +# +# CONFIG_CFG80211 is not set +CONFIG_WIRELESS_EXT=y +# CONFIG_MAC80211 is not set CONFIG_IEEE80211=y # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=y @@ -662,8 +672,7 @@ CONFIG_IEEE80211_CRYPT_TKIP=y CONFIG_IEEE80211_SOFTMAC=y # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set -CONFIG_WIRELESS_EXT=y -CONFIG_FIB_RULES=y +# CONFIG_RFKILL is not set # # Device Drivers @@ -676,16 +685,13 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y # CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set # CONFIG_SYS_HYPERVISOR is not set # # Connector - unified userspace <-> kernelspace linker # CONFIG_CONNECTOR=m - -# -# Memory Technology Devices (MTD) -# # CONFIG_MTD is not set # @@ -726,7 +732,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=16384 CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 -CONFIG_BLK_DEV_INITRD=y # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set @@ -734,13 +739,12 @@ # Misc devices # # CONFIG_IBM_ASM is not set +# CONFIG_PHANTOM is not set # CONFIG_SGI_IOC4 is not set # CONFIG_TIFM_CORE is not set # CONFIG_MSI_LAPTOP is not set - -# -# ATA/ATAPI/MFM/RLL support -# +# CONFIG_SONY_LAPTOP is not set +# CONFIG_THINKPAD_ACPI is not set CONFIG_IDE=y CONFIG_BLK_DEV_IDE=y @@ -752,11 +756,14 @@ CONFIG_BLK_DEV_IDEDISK=y CONFIG_IDEDISK_MULTI_MODE=y CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_DELKIN is not set CONFIG_BLK_DEV_IDECD=y # CONFIG_BLK_DEV_IDETAPE is not set CONFIG_BLK_DEV_IDEFLOPPY=y CONFIG_BLK_DEV_IDESCSI=m +# CONFIG_BLK_DEV_IDEACPI is not set CONFIG_IDE_TASK_IOCTL=y +CONFIG_IDE_PROC_FS=y # # IDE chipset support/bugfixes @@ -767,13 +774,13 @@ CONFIG_BLK_DEV_IDEPNP=y CONFIG_BLK_DEV_IDEPCI=y CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_IDEPCI_PCIBUS_ORDER=y # CONFIG_BLK_DEV_OFFBOARD is not set CONFIG_BLK_DEV_GENERIC=y # CONFIG_BLK_DEV_OPTI621 is not set CONFIG_BLK_DEV_RZ1000=y CONFIG_BLK_DEV_IDEDMA_PCI=y # CONFIG_BLK_DEV_IDEDMA_FORCED is not set -CONFIG_IDEDMA_PCI_AUTO=y # CONFIG_IDEDMA_ONLYDISK is not set CONFIG_BLK_DEV_AEC62XX=y CONFIG_BLK_DEV_ALI15X3=y @@ -792,6 +799,7 @@ # CONFIG_BLK_DEV_JMICRON is not set # CONFIG_BLK_DEV_SC1200 is not set CONFIG_BLK_DEV_PIIX=y +# CONFIG_BLK_DEV_IT8213 is not set CONFIG_BLK_DEV_IT821X=y # CONFIG_BLK_DEV_NS87415 is not set CONFIG_BLK_DEV_PDC202XX_OLD=y @@ -803,11 +811,11 @@ CONFIG_BLK_DEV_SLC90E66=y # CONFIG_BLK_DEV_TRM290 is not set CONFIG_BLK_DEV_VIA82CXXX=y +# CONFIG_BLK_DEV_TC86C001 is not set # CONFIG_IDE_ARM is not set # CONFIG_IDE_CHIPSETS is not set CONFIG_BLK_DEV_IDEDMA=y # CONFIG_IDEDMA_IVB is not set -CONFIG_IDEDMA_AUTO=y # CONFIG_BLK_DEV_HD is not set # @@ -837,6 +845,7 @@ CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_LOGGING=y # CONFIG_SCSI_SCAN_ASYNC is not set +CONFIG_SCSI_WAIT_SCAN=m # # SCSI Transports @@ -869,7 +878,6 @@ CONFIG_SCSI_AIC79XX=m CONFIG_AIC79XX_CMDS_PER_DEVICE=4 CONFIG_AIC79XX_RESET_DELAY_MS=15000 -# CONFIG_AIC79XX_ENABLE_RD_STRM is not set # CONFIG_AIC79XX_DEBUG_ENABLE is not set CONFIG_AIC79XX_DEBUG_MASK=0 # CONFIG_AIC79XX_REG_PRETTY_PRINT is not set @@ -930,10 +938,6 @@ CONFIG_PCMCIA_NINJA_SCSI=m CONFIG_PCMCIA_QLOGIC=m CONFIG_PCMCIA_SYM53C500=m - -# -# Serial ATA (prod) and Parallel ATA (experimental) drivers -# # CONFIG_ATA is not set # @@ -960,12 +964,14 @@ # # IEEE 1394 (FireWire) support # +# CONFIG_FIREWIRE is not set # CONFIG_IEEE1394 is not set # # I2O device support # # CONFIG_I2O is not set +# CONFIG_MACINTOSH_DRIVERS is not set # # Network device support @@ -976,15 +982,7 @@ CONFIG_EQUALIZER=m CONFIG_TUN=m CONFIG_NET_SB1000=m - -# -# ARCnet devices -# # CONFIG_ARCNET is not set - -# -# PHY device support -# CONFIG_PHYLIB=m # @@ -1088,10 +1086,8 @@ CONFIG_VIA_RHINE=m CONFIG_VIA_RHINE_MMIO=y # CONFIG_VIA_RHINE_NAPI is not set - -# -# Ethernet (1000 Mbit) -# +# CONFIG_SC92031 is not set +CONFIG_NETDEV_1000=y CONFIG_ACENIC=m # CONFIG_ACENIC_OMIT_TIGON_I is not set CONFIG_DL2K=m @@ -1112,23 +1108,19 @@ CONFIG_TIGON3=y CONFIG_BNX2=y # CONFIG_QLA3XXX is not set - -# -# Ethernet (10000 Mbit) -# +# CONFIG_ATL1 is not set +CONFIG_NETDEV_10000=y CONFIG_CHELSIO_T1=m CONFIG_CHELSIO_T1_1G=y CONFIG_CHELSIO_T1_NAPI=y +# CONFIG_CHELSIO_T3 is not set CONFIG_IXGB=y CONFIG_IXGB_NAPI=y CONFIG_S2IO=m CONFIG_S2IO_NAPI=y # CONFIG_MYRI10GE is not set CONFIG_NETXEN_NIC=y - -# -# Token Ring devices -# +# CONFIG_MLX4_CORE is not set CONFIG_TR=y CONFIG_IBMTR=m CONFIG_IBMOL=m @@ -1142,71 +1134,36 @@ CONFIG_SMCTR=m # -# Wireless LAN (non-hamradio) +# Wireless LAN # -CONFIG_NET_RADIO=y -# CONFIG_NET_WIRELESS_RTNETLINK is not set +# CONFIG_WLAN_PRE80211 is not set +# CONFIG_WLAN_80211 is not set # -# Obsolete Wireless cards support (pre-802.11) +# USB Network Adapters # -# CONFIG_STRIP is not set -# CONFIG_ARLAN is not set -CONFIG_WAVELAN=m -CONFIG_PCMCIA_WAVELAN=m -CONFIG_PCMCIA_NETWAVE=m - -# -# Wireless 802.11 Frequency Hopping cards support -# -# CONFIG_PCMCIA_RAYCS is not set - -# -# Wireless 802.11b ISA/PCI cards support -# -CONFIG_IPW2100=m -CONFIG_IPW2100_MONITOR=y -# CONFIG_IPW2100_DEBUG is not set -CONFIG_IPW2200=m -# CONFIG_IPW2200_MONITOR is not set -# CONFIG_IPW2200_QOS is not set -# CONFIG_IPW2200_DEBUG is not set -CONFIG_AIRO=m -CONFIG_HERMES=m -CONFIG_PLX_HERMES=m -CONFIG_TMD_HERMES=m -CONFIG_NORTEL_HERMES=m -CONFIG_PCI_HERMES=m -CONFIG_ATMEL=m -CONFIG_PCI_ATMEL=m - -# -# Wireless 802.11b Pcmcia/Cardbus cards support -# -CONFIG_PCMCIA_HERMES=m -CONFIG_PCMCIA_SPECTRUM=m -CONFIG_AIRO_CS=m -CONFIG_PCMCIA_ATMEL=m -CONFIG_PCMCIA_WL3501=m - -# -# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support -# -CONFIG_PRISM54=m -CONFIG_USB_ZD1201=m -CONFIG_HOSTAP=m -CONFIG_HOSTAP_FIRMWARE=y -# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set -CONFIG_HOSTAP_PLX=m -CONFIG_HOSTAP_PCI=m -CONFIG_HOSTAP_CS=m -# CONFIG_BCM43XX is not set -# CONFIG_ZD1211RW is not set -CONFIG_NET_WIRELESS=y - -# -# PCMCIA network device support -# +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_USBNET_MII=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +# CONFIG_USB_NET_DM9601 is not set +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +# CONFIG_USB_NET_MCS7830 is not set +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +# CONFIG_USB_KC2190 is not set +CONFIG_USB_NET_ZAURUS=m CONFIG_NET_PCMCIA=y CONFIG_PCMCIA_3C589=m CONFIG_PCMCIA_3C574=m @@ -1217,15 +1174,8 @@ CONFIG_PCMCIA_XIRC2PS=m CONFIG_PCMCIA_AXNET=m CONFIG_PCMCIA_IBMTR=m - -# -# Wan interfaces -# # CONFIG_WAN is not set - -# -# ATM drivers -# +CONFIG_ATM_DRIVERS=y # CONFIG_ATM_DUMMY is not set CONFIG_ATM_TCP=m CONFIG_ATM_LANAI=m @@ -1273,7 +1223,6 @@ # CONFIG_SHAPER is not set CONFIG_NETCONSOLE=m CONFIG_NETPOLL=y -# CONFIG_NETPOLL_RX is not set CONFIG_NETPOLL_TRAP=y CONFIG_NET_POLL_CONTROLLER=y @@ -1292,6 +1241,7 @@ # CONFIG_INPUT=y CONFIG_INPUT_FF_MEMLESS=y +# CONFIG_INPUT_POLLDEV is not set # # Userland interfaces @@ -1317,7 +1267,14 @@ # CONFIG_KEYBOARD_STOWAWAY is not set CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y +CONFIG_MOUSE_PS2_ALPS=y +CONFIG_MOUSE_PS2_LOGIPS2PP=y +CONFIG_MOUSE_PS2_SYNAPTICS=y +CONFIG_MOUSE_PS2_LIFEBOOK=y +CONFIG_MOUSE_PS2_TRACKPOINT=y +# CONFIG_MOUSE_PS2_TOUCHKIT is not set CONFIG_MOUSE_SERIAL=m +# CONFIG_MOUSE_APPLETOUCH is not set CONFIG_MOUSE_INPORT=m CONFIG_MOUSE_ATIXL=y CONFIG_MOUSE_LOGIBM=m @@ -1345,6 +1302,8 @@ CONFIG_JOYSTICK_STINGER=m CONFIG_JOYSTICK_TWIDJOY=m CONFIG_JOYSTICK_JOYDUMP=m +# CONFIG_JOYSTICK_XPAD is not set +# CONFIG_INPUT_TABLET is not set CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_GUNZE=m CONFIG_TOUCHSCREEN_ELO=m @@ -1354,9 +1313,16 @@ # CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set # CONFIG_TOUCHSCREEN_TOUCHWIN is not set # CONFIG_TOUCHSCREEN_UCB1400 is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set CONFIG_INPUT_MISC=y CONFIG_INPUT_PCSPKR=y CONFIG_INPUT_WISTRON_BTNS=m +# CONFIG_INPUT_ATLAS_BTNS is not set +# CONFIG_INPUT_ATI_REMOTE is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set CONFIG_INPUT_UINPUT=m # @@ -1440,10 +1406,6 @@ CONFIG_IPMI_SI=m CONFIG_IPMI_WATCHDOG=m CONFIG_IPMI_POWEROFF=m - -# -# Watchdog Cards -# CONFIG_WATCHDOG=y # CONFIG_WATCHDOG_NOWAYOUT is not set @@ -1461,7 +1423,6 @@ CONFIG_IBMASR=m CONFIG_WAFER_WDT=m CONFIG_I6300ESB_WDT=m -CONFIG_I8XX_TCO=m # CONFIG_ITCO_WDT is not set CONFIG_SC1200_WDT=m # CONFIG_PC87413_WDT is not set @@ -1550,11 +1511,9 @@ # # CONFIG_TCG_TPM is not set # CONFIG_TELCLOCK is not set - -# -# I2C support -# +CONFIG_DEVPORT=y CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y CONFIG_I2C_CHARDEV=y # @@ -1582,11 +1541,13 @@ # CONFIG_I2C_PARPORT_LIGHT is not set CONFIG_I2C_PROSAVAGE=m CONFIG_I2C_SAVAGE4=m +# CONFIG_I2C_SIMTEC is not set # CONFIG_SCx200_ACB is not set CONFIG_I2C_SIS5595=m CONFIG_I2C_SIS630=m CONFIG_I2C_SIS96X=m CONFIG_I2C_STUB=m +# CONFIG_I2C_TINY_USB is not set CONFIG_I2C_VIA=m CONFIG_I2C_VIAPRO=m CONFIG_I2C_VOODOO3=m @@ -1632,16 +1593,14 @@ # CONFIG_W1_SLAVE_THERM is not set # CONFIG_W1_SLAVE_SMEM is not set # CONFIG_W1_SLAVE_DS2433 is not set - -# -# Hardware Monitoring support -# CONFIG_HWMON=m CONFIG_HWMON_VID=m # CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_AD7418 is not set CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m +# CONFIG_SENSORS_ADM1029 is not set CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m # CONFIG_SENSORS_K8TEMP is not set @@ -1653,6 +1612,7 @@ CONFIG_SENSORS_FSCPOS=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m +# CONFIG_SENSORS_CORETEMP is not set CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m @@ -1665,6 +1625,7 @@ CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m CONFIG_SENSORS_MAX1619=m +# CONFIG_SENSORS_MAX6650 is not set CONFIG_SENSORS_PC87360=m # CONFIG_SENSORS_PC87427 is not set CONFIG_SENSORS_SIS5595=m @@ -1682,23 +1643,22 @@ CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m +# CONFIG_SENSORS_APPLESMC is not set # CONFIG_HWMON_DEBUG_CHIP is not set # +# Multifunction device drivers +# +# CONFIG_MFD_SM501 is not set + +# # Multimedia devices # CONFIG_VIDEO_DEV=m # CONFIG_VIDEO_V4L1 is not set # CONFIG_VIDEO_V4L1_COMPAT is not set CONFIG_VIDEO_V4L2=y - -# -# Video Capture Adapters -# - -# -# Video Capture Adapters -# +CONFIG_VIDEO_CAPTURE_DRIVERS=y # CONFIG_VIDEO_ADV_DEBUG is not set # CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set @@ -1753,16 +1713,12 @@ # CONFIG_VIDEO_HEXIUM_GEMINI is not set # CONFIG_VIDEO_CX88 is not set # CONFIG_VIDEO_CAFE_CCIC is not set - -# -# V4L USB devices -# +CONFIG_V4L_USB_DRIVERS=y # CONFIG_VIDEO_PVRUSB2 is not set # CONFIG_VIDEO_USBVISION is not set - -# -# Radio Adapters -# +# CONFIG_USB_SN9C102 is not set +# CONFIG_USB_ZR364XX is not set +CONFIG_RADIO_ADAPTERS=y # CONFIG_RADIO_CADET is not set # CONFIG_RADIO_RTRACK is not set # CONFIG_RADIO_RTRACK2 is not set @@ -1778,26 +1734,42 @@ # CONFIG_RADIO_TYPHOON is not set # CONFIG_RADIO_ZOLTRIX is not set # CONFIG_USB_DSBR is not set +# CONFIG_DVB_CORE is not set +CONFIG_DAB=y +CONFIG_USB_DABUSB=m # -# Digital Video Broadcasting Devices +# Graphics support # -# CONFIG_DVB is not set -CONFIG_USB_DABUSB=m +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=m +# CONFIG_BACKLIGHT_PROGEAR is not set # -# Graphics support +# Display device support # -CONFIG_FIRMWARE_EDID=y +# CONFIG_DISPLAY_SUPPORT is not set +CONFIG_VGASTATE=m CONFIG_FB=y +CONFIG_FIRMWARE_EDID=y # CONFIG_FB_DDC is not set CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_SYS_FOPS is not set +CONFIG_FB_DEFERRED_IO=y +# CONFIG_FB_SVGALIB is not set # CONFIG_FB_MACMODES is not set # CONFIG_FB_BACKLIGHT is not set CONFIG_FB_MODE_HELPERS=y CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# # CONFIG_FB_CIRRUS is not set # CONFIG_FB_PM2 is not set # CONFIG_FB_CYBER2000 is not set @@ -1806,24 +1778,30 @@ # CONFIG_FB_IMSTT is not set CONFIG_FB_VGA16=m CONFIG_FB_VESA=y +# CONFIG_FB_HECUBA is not set # CONFIG_FB_HGA is not set # CONFIG_FB_S1D13XXX is not set # CONFIG_FB_NVIDIA is not set # CONFIG_FB_RIVA is not set # CONFIG_FB_I810 is not set +# CONFIG_FB_LE80578 is not set # CONFIG_FB_INTEL is not set # CONFIG_FB_MATROX is not set # CONFIG_FB_RADEON is not set # CONFIG_FB_ATY128 is not set # CONFIG_FB_ATY is not set +# CONFIG_FB_S3 is not set # CONFIG_FB_SAVAGE is not set # CONFIG_FB_SIS is not set # CONFIG_FB_NEOMAGIC is not set # CONFIG_FB_KYRO is not set # CONFIG_FB_3DFX is not set # CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set # CONFIG_FB_CYBLA is not set # CONFIG_FB_TRIDENT is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_PM3 is not set # CONFIG_FB_GEODE is not set # CONFIG_FB_VIRTUAL is not set @@ -1841,17 +1819,10 @@ # CONFIG_FONTS is not set CONFIG_FONT_8x8=y CONFIG_FONT_8x16=y - -# -# Logo configuration -# CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set CONFIG_LOGO_LINUX_CLUT224=y -# CONFIG_BACKLIGHT_LCD_SUPPORT is not set -CONFIG_BACKLIGHT_CLASS_DEVICE=m -CONFIG_BACKLIGHT_DEVICE=y # # Sound @@ -1862,8 +1833,22 @@ # HID Devices # CONFIG_HID=y +# CONFIG_HID_DEBUG is not set # +# USB Input Devices +# +CONFIG_USB_HID=y +# CONFIG_USB_HIDINPUT_POWERBOOK is not set +CONFIG_HID_FF=y +CONFIG_HID_PID=y +CONFIG_LOGITECH_FF=y +# CONFIG_PANTHERLORD_FF is not set +CONFIG_THRUSTMASTER_FF=y +# CONFIG_ZEROPLUS_FF is not set +CONFIG_USB_HIDDEV=y + +# # USB support # CONFIG_USB_ARCH_HAS_HCD=y @@ -1876,7 +1861,7 @@ # Miscellaneous USB options # CONFIG_USB_DEVICEFS=y -# CONFIG_USB_BANDWIDTH is not set +CONFIG_USB_DEVICE_CLASS=y # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_SUSPEND is not set # CONFIG_USB_OTG is not set @@ -1888,9 +1873,11 @@ CONFIG_USB_EHCI_SPLIT_ISO=y CONFIG_USB_EHCI_ROOT_HUB_TT=y # CONFIG_USB_EHCI_TT_NEWSCHED is not set +# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_ISP116X_HCD=m CONFIG_USB_OHCI_HCD=y -# CONFIG_USB_OHCI_BIG_ENDIAN is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_UHCI_HCD=y CONFIG_USB_SL811_HCD=m @@ -1924,58 +1911,10 @@ CONFIG_USB_LIBUSUAL=y # -# USB Input Devices -# -CONFIG_USB_HID=y -# CONFIG_USB_HIDINPUT_POWERBOOK is not set -CONFIG_HID_FF=y -CONFIG_HID_PID=y -CONFIG_LOGITECH_FF=y -CONFIG_THRUSTMASTER_FF=y -# CONFIG_ZEROPLUS_FF is not set -CONFIG_USB_HIDDEV=y -CONFIG_USB_AIPTEK=m -CONFIG_USB_WACOM=m -CONFIG_USB_ACECAD=m -CONFIG_USB_KBTAB=m -CONFIG_USB_POWERMATE=m -# CONFIG_USB_TOUCHSCREEN is not set -CONFIG_USB_YEALINK=m -CONFIG_USB_XPAD=m -CONFIG_USB_ATI_REMOTE=m -# CONFIG_USB_ATI_REMOTE2 is not set -CONFIG_USB_KEYSPAN_REMOTE=m -CONFIG_USB_APPLETOUCH=m - -# # USB Imaging devices # CONFIG_USB_MDC800=m CONFIG_USB_MICROTEK=m - -# -# USB Network Adapters -# -CONFIG_USB_CATC=m -CONFIG_USB_KAWETH=m -CONFIG_USB_PEGASUS=m -CONFIG_USB_RTL8150=m -CONFIG_USB_USBNET_MII=m -CONFIG_USB_USBNET=m -CONFIG_USB_NET_AX8817X=m -CONFIG_USB_NET_CDCETHER=m -CONFIG_USB_NET_GL620A=m -CONFIG_USB_NET_NET1080=m -CONFIG_USB_NET_PLUSB=m -# CONFIG_USB_NET_MCS7830 is not set -CONFIG_USB_NET_RNDIS_HOST=m -CONFIG_USB_NET_CDC_SUBSET=m -CONFIG_USB_ALI_M5632=y -CONFIG_USB_AN2720=y -CONFIG_USB_BELKIN=y -CONFIG_USB_ARMLINUX=y -CONFIG_USB_EPSON2888=y -CONFIG_USB_NET_ZAURUS=m CONFIG_USB_MON=y # @@ -2048,6 +1987,7 @@ CONFIG_USB_RIO500=m CONFIG_USB_LEGOTOWER=m CONFIG_USB_LCD=m +# CONFIG_USB_BERRY_CHARGE is not set CONFIG_USB_LED=m # CONFIG_USB_CYPRESS_CY7C63 is not set # CONFIG_USB_CYTHERM is not set @@ -2059,6 +1999,7 @@ CONFIG_USB_SISUSBVGA_CON=y CONFIG_USB_LD=m # CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set CONFIG_USB_TEST=m # @@ -2074,10 +2015,6 @@ # USB Gadget Support # # CONFIG_USB_GADGET is not set - -# -# MMC/SD Card support -# # CONFIG_MMC is not set # @@ -2173,7 +2110,6 @@ CONFIG_ISO9660_FS=y CONFIG_JOLIET=y CONFIG_ZISOFS=y -CONFIG_ZISOFS_FS=y CONFIG_UDF_FS=m CONFIG_UDF_NLS=y @@ -2240,6 +2176,7 @@ CONFIG_NFS_COMMON=y CONFIG_SUNRPC=m CONFIG_SUNRPC_GSS=m +# CONFIG_SUNRPC_BIND34 is not set CONFIG_RPCSEC_GSS_KRB5=m CONFIG_RPCSEC_GSS_SPKM3=m CONFIG_SMB_FS=m @@ -2285,6 +2222,7 @@ CONFIG_SUN_PARTITION=y # CONFIG_KARMA_PARTITION is not set CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set # # Native Language Support @@ -2353,16 +2291,16 @@ CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set CONFIG_DEBUG_KERNEL=y -CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_DEBUG_SHIRQ is not set # CONFIG_DETECT_SOFTLOCKUP is not set -# CONFIG_SCHEDSTATS is not set +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y CONFIG_DEBUG_SLAB=y # CONFIG_DEBUG_SLAB_LEAK is not set # CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_RT_MUTEX_TESTER is not set # CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_RWSEMS is not set # CONFIG_DEBUG_LOCK_ALLOC is not set # CONFIG_PROVE_LOCKING is not set CONFIG_DEBUG_SPINLOCK_SLEEP=y @@ -2377,9 +2315,14 @@ CONFIG_FORCED_INLINING=y # CONFIG_RCU_TORTURE_TEST is not set # CONFIG_LKDTM is not set +# CONFIG_FAULT_INJECTION is not set CONFIG_EARLY_PRINTK=y CONFIG_DEBUG_STACKOVERFLOW=y # CONFIG_DEBUG_STACK_USAGE is not set + +# +# Page alloc debug is incompatible with Software Suspend on i386 +# CONFIG_DEBUG_RODATA=y CONFIG_4KSTACKS=y CONFIG_X86_FIND_SMP_CONFIG=y @@ -2418,8 +2361,11 @@ # CONFIG_CRYPTO_GF128MUL is not set CONFIG_CRYPTO_ECB=y CONFIG_CRYPTO_CBC=m +CONFIG_CRYPTO_PCBC=m # CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_CRYPTD is not set CONFIG_CRYPTO_DES=m +# CONFIG_CRYPTO_FCRYPT is not set CONFIG_CRYPTO_BLOWFISH=m CONFIG_CRYPTO_TWOFISH=m CONFIG_CRYPTO_TWOFISH_COMMON=m @@ -2436,6 +2382,7 @@ CONFIG_CRYPTO_DEFLATE=m CONFIG_CRYPTO_MICHAEL_MIC=y CONFIG_CRYPTO_CRC32C=m +# CONFIG_CRYPTO_CAMELLIA is not set # CONFIG_CRYPTO_TEST is not set # @@ -2452,6 +2399,7 @@ CONFIG_BITREVERSE=y CONFIG_CRC_CCITT=m CONFIG_CRC16=m +# CONFIG_CRC_ITU_T is not set CONFIG_CRC32=y CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y @@ -2461,7 +2409,9 @@ CONFIG_TEXTSEARCH_BM=m CONFIG_TEXTSEARCH_FSM=m CONFIG_PLIST=y -CONFIG_IOMAP_COPY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y CONFIG_GENERIC_HARDIRQS=y CONFIG_GENERIC_IRQ_PROBE=y CONFIG_GENERIC_PENDING_IRQ=y Index: linuxfirmwarekit/initramfs/create_initramfs.sh =================================================================== --- linuxfirmwarekit/initramfs/create_initramfs.sh (revision 218) +++ linuxfirmwarekit/initramfs/create_initramfs.sh (revision 257) @@ -9,6 +9,7 @@ mkdir data cd data for i in ../rpms/*.rpm ; do rpm2cpio $i | cpio -i -d ; echo $i; done +for i in ../rpms/*.deb ; do dpkg -x $i . ; echo $i; done mkdir -p etc/init.d cp etc/rc.d/init.d/functions etc/init.d/functions rm -rf usr/share/doc/* @@ -29,7 +30,6 @@ mkdir tmp mkdir usbkey mkdir -p root/results -cp ../*.css root/results mkdir -p var/run echo > etc/mtab cp ../init . Index: linuxfirmwarekit/initramfs/cdimage/isolinux/template.msg =================================================================== --- linuxfirmwarekit/initramfs/cdimage/isolinux/template.msg (revision 218) +++ linuxfirmwarekit/initramfs/cdimage/isolinux/template.msg (revision 257) @@ -3,6 +3,6 @@ To run the bios test on the normal console, press the 0f07 key. Type "safe" to run in safe mode (no ACPI interrupt routing) Type "serial" to run over serial console (settings: 115200/8N1) -Type "auto" to run in fully automated mode Linux vendor distribution kernels: +Type plain to boot the vanilla 2.6.22.9 kernel (default) Index: linuxfirmwarekit/initramfs/kernels =================================================================== --- linuxfirmwarekit/initramfs/kernels (revision 218) +++ linuxfirmwarekit/initramfs/kernels (revision 257) @@ -1,4 +1,3 @@ fc6 vmlinuz-2.6.18-1.2798.fc6 kernel-2.6.18-1.2798.fc6.i686.rpm http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/Fedora/RPMS/kernel-2.6.18-1.2798.fc6.i686.rpm http://download.fedora.redhat.com/pub/fedora/linux/core/6/source/SRPMS/kernel-2.6.18-1.2798.fc6.src.rpm -oracle vmlinuz-2.6.9-42.0.0.0.1.ELsmp kernel-smp-2.6.9-42.0.0.0.1.EL.i686.rpm http://zeniv.linux.org.uk/pub/distributions/enterprise/EL4/i386/U4/i386/kernel-2.6.9-42.0.0.0.1.EL.i686.rpm http://zeniv.linux.org.uk/pub/distributions/enterprise/EL4/i386/U4/SRPMS/kernel-2.6.9-42.0.0.0.1.EL.src.rpm -rhel4 vmlinuz-2.6.9-11.EL.audit.91smp kernel-smp-2.6.9-11.EL.audit.91.i686.rpm ftp://ftp.redhat.de/pub/redhat/linux/eal/EAL4_RHEL4/IBM-RU/i686/kernel-smp-2.6.9-11.EL.audit.91.i686.rpm ftp://ftp.redhat.de/pub/redhat/linux/eal/EAL4_RHEL4/IBM-RU/SRPMS/kernel-2.6.9-11.EL.audit.91.src.rpm - +mdv2007.1 vmlinuz-2.6.17-14mdv kernel-2.6.17.14mdv-1-1mdv2007.1.i586.rpm http://mirrors.kernel.org/mandrake/Mandrakelinux/official/updates/2007.1/i586/media/main/updates/kernel-2.6.17.14mdv-1-1mdv2007.1.i586.rpm http://mirrors.kernel.org/mandrake/Mandrakelinux/official/updates/2007.1/SRPMS/main/updates/kernel-2.6.17.14mdv-1-1mdv2007.1.src.rpm +ubu7.04 vmlinuz-2.6.20-15-386 linux-image-2.6.20-15-386_2.6.20-15.27_i386.deb http://mirrors.kernel.org/ubuntu/pool/main/l/linux-source-2.6.20/linux-image-2.6.20-15-386_2.6.20-15.27_i386.deb http://security.ubuntu.com/ubuntu/pool/main/l/linux-source-2.6.20/linux-source-2.6.20_2.6.20-15.27_all.deb Index: linuxfirmwarekit/initramfs/srpms/Makefile =================================================================== --- linuxfirmwarekit/initramfs/srpms/Makefile (revision 218) +++ linuxfirmwarekit/initramfs/srpms/Makefile (revision 257) @@ -19,5 +19,13 @@ wget http://pciids.sourceforge.net/pci.ids kernels: - for i in `cat ../kernels | cut -f5`; do wget $$i ; done - touch kernels \ No newline at end of file + for i in `cat ../kernels | cut -f5`; do wget -nc $$i ; done + touch kernels + +clean: + rm -rf *.rpm + rm -rf *.deb + rm -rf *.gz + rm -rf *.bz2 + rm -rf pci.ids + rm -rf kernels Index: linuxfirmwarekit/actbl2.h =================================================================== --- linuxfirmwarekit/actbl2.h (revision 0) +++ linuxfirmwarekit/actbl2.h (revision 257) @@ -0,0 +1,277 @@ +/****************************************************************************** + * + * Name: actbl2.h - ACPI Specification Revision 2.0 Tables + * + *****************************************************************************/ + +/* + * Copyright (C) 2000 - 2006, R. Byron Moore + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions, and the following disclaimer, + * without modification. + * 2. Redistributions in binary form must reproduce at minimum a disclaimer + * substantially similar to the "NO WARRANTY" disclaimer below + * ("Disclaimer") and any redistribution must be conditioned upon + * including a substantially similar Disclaimer requirement for further + * binary redistribution. + * 3. Neither the names of the above-listed copyright holders nor the names + * of any contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * Alternatively, this software may be distributed under the terms of the + * GNU General Public License ("GPL") version 2 as published by the Free + * Software Foundation. + * + * NO WARRANTY + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGES. + */ + +#ifndef __ACTBL2_H__ +#define __ACTBL2_H__ + +/* + * Prefered Power Management Profiles + */ +#define PM_UNSPECIFIED 0 +#define PM_DESKTOP 1 +#define PM_MOBILE 2 +#define PM_WORKSTATION 3 +#define PM_ENTERPRISE_SERVER 4 +#define PM_SOHO_SERVER 5 +#define PM_APPLIANCE_PC 6 + +/* + * ACPI Boot Arch Flags + */ +#define BAF_LEGACY_DEVICES 0x0001 +#define BAF_8042_KEYBOARD_CONTROLLER 0x0002 + +#define FADT2_REVISION_ID 3 +#define FADT2_MINUS_REVISION_ID 2 + +#pragma pack(1) + +/* + * ACPI 2.0 Root System Description Table (RSDT) + */ +struct rsdt_descriptor_rev2 { + ACPI_TABLE_HEADER_DEF /* ACPI common table header */ + u32 table_offset_entry[1]; /* Array of pointers to ACPI tables */ +}; + +/* + * ACPI 2.0 Extended System Description Table (XSDT) + */ +struct xsdt_descriptor_rev2 { + ACPI_TABLE_HEADER_DEF /* ACPI common table header */ + u64 table_offset_entry[1]; /* Array of pointers to ACPI tables */ +}; + +/* + * ACPI 2.0 Firmware ACPI Control Structure (FACS) + */ +struct facs_descriptor_rev2 { + char signature[4]; /* ASCII table signature */ + u32 length; /* Length of structure, in bytes */ + u32 hardware_signature; /* Hardware configuration signature */ + u32 firmware_waking_vector; /* 32-bit physical address of the Firmware Waking Vector. */ + u32 global_lock; /* Global Lock used to synchronize access to shared hardware resources */ + + /* Flags (32 bits) */ + + u8 S4bios_f:1; /* 00: S4BIOS support is present */ + u8:7; /* 01-07: Reserved, must be zero */ + u8 reserved1[3]; /* 08-31: Reserved, must be zero */ + + u64 xfirmware_waking_vector; /* 64-bit physical address of the Firmware Waking Vector. */ + u8 version; /* Version of this table */ + u8 reserved3[31]; /* Reserved, must be zero */ +}; + +/* + * ACPI 2.0+ Generic Address Structure (GAS) + */ +struct acpi_generic_address { + u8 address_space_id; /* Address space where struct or register exists. */ + u8 register_bit_width; /* Size in bits of given register */ + u8 register_bit_offset; /* Bit offset within the register */ + u8 access_width; /* Minimum Access size (ACPI 3.0) */ + u64 address; /* 64-bit address of struct or register */ +}; + +#define FADT_REV2_COMMON \ + u32 V1_firmware_ctrl; /* 32-bit physical address of FACS */ \ + u32 V1_dsdt; /* 32-bit physical address of DSDT */ \ + u8 reserved1; /* System Interrupt Model isn't used in ACPI 2.0*/ \ + u8 prefer_PM_profile; /* Conveys preferred power management profile to OSPM. */ \ + u16 sci_int; /* System vector of SCI interrupt */ \ + u32 smi_cmd; /* Port address of SMI command port */ \ + u8 acpi_enable; /* Value to write to smi_cmd to enable ACPI */ \ + u8 acpi_disable; /* Value to write to smi_cmd to disable ACPI */ \ + u8 S4bios_req; /* Value to write to SMI CMD to enter S4BIOS state */ \ + u8 pstate_cnt; /* Processor performance state control*/ \ + u32 V1_pm1a_evt_blk; /* Port address of Power Mgt 1a acpi_event Reg Blk */ \ + u32 V1_pm1b_evt_blk; /* Port address of Power Mgt 1b acpi_event Reg Blk */ \ + u32 V1_pm1a_cnt_blk; /* Port address of Power Mgt 1a Control Reg Blk */ \ + u32 V1_pm1b_cnt_blk; /* Port address of Power Mgt 1b Control Reg Blk */ \ + u32 V1_pm2_cnt_blk; /* Port address of Power Mgt 2 Control Reg Blk */ \ + u32 V1_pm_tmr_blk; /* Port address of Power Mgt Timer Ctrl Reg Blk */ \ + u32 V1_gpe0_blk; /* Port addr of General Purpose acpi_event 0 Reg Blk */ \ + u32 V1_gpe1_blk; /* Port addr of General Purpose acpi_event 1 Reg Blk */ \ + u8 pm1_evt_len; /* Byte length of ports at pm1_x_evt_blk */ \ + u8 pm1_cnt_len; /* Byte length of ports at pm1_x_cnt_blk */ \ + u8 pm2_cnt_len; /* Byte Length of ports at pm2_cnt_blk */ \ + u8 pm_tm_len; /* Byte Length of ports at pm_tm_blk */ \ + u8 gpe0_blk_len; /* Byte Length of ports at gpe0_blk */ \ + u8 gpe1_blk_len; /* Byte Length of ports at gpe1_blk */ \ + u8 gpe1_base; /* Offset in gpe model where gpe1 events start */ \ + u8 cst_cnt; /* Support for the _CST object and C States change notification.*/ \ + u16 plvl2_lat; /* Worst case HW latency to enter/exit C2 state */ \ + u16 plvl3_lat; /* Worst case HW latency to enter/exit C3 state */ \ + u16 flush_size; /* Number of flush strides that need to be read */ \ + u16 flush_stride; /* Processor's memory cache line width, in bytes */ \ + u8 duty_offset; /* Processor's duty cycle index in processor's P_CNT reg*/ \ + u8 duty_width; /* Processor's duty cycle value bit width in P_CNT register.*/ \ + u8 day_alrm; /* Index to day-of-month alarm in RTC CMOS RAM */ \ + u8 mon_alrm; /* Index to month-of-year alarm in RTC CMOS RAM */ \ + u8 century; /* Index to century in RTC CMOS RAM */ \ + u16 iapc_boot_arch; /* IA-PC Boot Architecture Flags. See Table 5-10 for description*/ + +/* + * ACPI 2.0+ Fixed ACPI Description Table (FADT) + */ +struct fadt_descriptor_rev2 { + ACPI_TABLE_HEADER_DEF /* ACPI common table header */ + FADT_REV2_COMMON u8 reserved2; /* Reserved, must be zero */ + + /* Flags (32 bits) */ + + u8 wb_invd:1; /* 00: The wbinvd instruction works properly */ + u8 wb_invd_flush:1; /* 01: The wbinvd flushes but does not invalidate */ + u8 proc_c1:1; /* 02: All processors support C1 state */ + u8 plvl2_up:1; /* 03: C2 state works on MP system */ + u8 pwr_button:1; /* 04: Power button is handled as a generic feature */ + u8 sleep_button:1; /* 05: Sleep button is handled as a generic feature, or not present */ + u8 fixed_rTC:1; /* 06: RTC wakeup stat not in fixed register space */ + u8 rtcs4:1; /* 07: RTC wakeup stat not possible from S4 */ + u8 tmr_val_ext:1; /* 08: tmr_val is 32 bits 0=24-bits */ + u8 dock_cap:1; /* 09: Docking supported */ + u8 reset_reg_sup:1; /* 10: System reset via the FADT RESET_REG supported */ + u8 sealed_case:1; /* 11: No internal expansion capabilities and case is sealed */ + u8 headless:1; /* 12: No local video capabilities or local input devices */ + u8 cpu_sw_sleep:1; /* 13: Must execute native instruction after writing SLP_TYPx register */ + + u8 pci_exp_wak:1; /* 14: System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */ + u8 use_platform_clock:1; /* 15: OSPM should use platform-provided timer (ACPI 3.0) */ + u8 S4rtc_sts_valid:1; /* 16: Contents of RTC_STS valid after S4 wake (ACPI 3.0) */ + u8 remote_power_on_capable:1; /* 17: System is compatible with remote power on (ACPI 3.0) */ + u8 force_apic_cluster_model:1; /* 18: All local APICs must use cluster model (ACPI 3.0) */ + u8 force_apic_physical_destination_mode:1; /* 19: all local x_aPICs must use physical dest mode (ACPI 3.0) */ + u8:4; /* 20-23: Reserved, must be zero */ + u8 reserved3; /* 24-31: Reserved, must be zero */ + + struct acpi_generic_address reset_register; /* Reset register address in GAS format */ + u8 reset_value; /* Value to write to the reset_register port to reset the system */ + u8 reserved4[3]; /* These three bytes must be zero */ + u64 xfirmware_ctrl; /* 64-bit physical address of FACS */ + u64 Xdsdt; /* 64-bit physical address of DSDT */ + struct acpi_generic_address xpm1a_evt_blk; /* Extended Power Mgt 1a acpi_event Reg Blk address */ + struct acpi_generic_address xpm1b_evt_blk; /* Extended Power Mgt 1b acpi_event Reg Blk address */ + struct acpi_generic_address xpm1a_cnt_blk; /* Extended Power Mgt 1a Control Reg Blk address */ + struct acpi_generic_address xpm1b_cnt_blk; /* Extended Power Mgt 1b Control Reg Blk address */ + struct acpi_generic_address xpm2_cnt_blk; /* Extended Power Mgt 2 Control Reg Blk address */ + struct acpi_generic_address xpm_tmr_blk; /* Extended Power Mgt Timer Ctrl Reg Blk address */ + struct acpi_generic_address xgpe0_blk; /* Extended General Purpose acpi_event 0 Reg Blk address */ + struct acpi_generic_address xgpe1_blk; /* Extended General Purpose acpi_event 1 Reg Blk address */ +}; + +/* "Down-revved" ACPI 2.0 FADT descriptor */ + +struct fadt_descriptor_rev2_minus { + ACPI_TABLE_HEADER_DEF /* ACPI common table header */ + FADT_REV2_COMMON u8 reserved2; /* Reserved, must be zero */ + u32 flags; + struct acpi_generic_address reset_register; /* Reset register address in GAS format */ + u8 reset_value; /* Value to write to the reset_register port to reset the system. */ + u8 reserved7[3]; /* Reserved, must be zero */ +}; + +/* ECDT - Embedded Controller Boot Resources Table */ + +struct ec_boot_resources { + ACPI_TABLE_HEADER_DEF struct acpi_generic_address ec_control; /* Address of EC command/status register */ + struct acpi_generic_address ec_data; /* Address of EC data register */ + u32 uid; /* Unique ID - must be same as the EC _UID method */ + u8 gpe_bit; /* The GPE for the EC */ + u8 ec_id[1]; /* Full namepath of the EC in the ACPI namespace */ +}; + +/* SRAT - System Resource Affinity Table */ + +struct static_resource_alloc { + u8 type; + u8 length; + u8 proximity_domain_lo; + u8 apic_id; + + /* Flags (32 bits) */ + + u8 enabled:1; /* 00: Use affinity structure */ + u8:7; /* 01-07: Reserved, must be zero */ + u8 reserved3[3]; /* 08-31: Reserved, must be zero */ + + u8 local_sapic_eid; + u8 proximity_domain_hi[3]; + u32 reserved4; /* Reserved, must be zero */ +}; + +struct memory_affinity { + u8 type; + u8 length; + u32 proximity_domain; + u16 reserved3; + u64 base_address; + u64 address_length; + u32 reserved4; + + /* Flags (32 bits) */ + + u8 enabled:1; /* 00: Use affinity structure */ + u8 hot_pluggable:1; /* 01: Memory region is hot pluggable */ + u8 non_volatile:1; /* 02: Memory is non-volatile */ + u8:5; /* 03-07: Reserved, must be zero */ + u8 reserved5[3]; /* 08-31: Reserved, must be zero */ + + u64 reserved6; /* Reserved, must be zero */ +}; + +struct system_resource_affinity { + ACPI_TABLE_HEADER_DEF u32 reserved1; /* Must be value '1' */ + u64 reserved2; /* Reserved, must be zero */ +}; + +/* SLIT - System Locality Distance Information Table */ + +struct system_locality_info { + ACPI_TABLE_HEADER_DEF u64 locality_count; + u8 entry[1][1]; +}; + +#pragma pack() + +#endif /* __ACTBL2_H__ */ Index: linuxfirmwarekit/e820.c =================================================================== --- linuxfirmwarekit/e820.c (revision 218) +++ linuxfirmwarekit/e820.c (revision 257) @@ -31,6 +31,7 @@ #include "biostest.h" +unsigned long RSDP_ADDRESS; struct e820_entry { uint64_t start_address; Index: linuxfirmwarekit/dumpresults.c =================================================================== --- linuxfirmwarekit/dumpresults.c (revision 0) +++ linuxfirmwarekit/dumpresults.c (revision 257) @@ -0,0 +1,176 @@ +/* + * Copyright (C) 2006, Intel Corporation + * + * This file is part of the Linux-ready Firmware Developer Kit + * + * This program file is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation; version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include + +#include + +#include "biostest.h" + + +/* Dump all test results in an xml formatted file */ +void dump_xml(GList *all_tests, char *filename) +{ + FILE *file; + GList *list1, *list2; + struct major_test *test; + struct detailed_result *result; + + file = fopen(filename, "w"); + if (!file) + return; + + + fprintf(file, "\n"); + fprintf(file, "\n"); + fprintf(file, "\n"); + + + list1 = g_list_first(all_tests); + while (list1) { + test = (struct major_test *)list1->data; + + fprintf(file,"\n\t%s\n\t%s\n\t%i\n \n", + test->ID, test->name, test->result); + if (test->description) + fprintf(file, "\t%s\n", test->description->details); + + + list2 = g_list_first(test->details); + while (list2) { + result = (struct detailed_result*)list2->data; + fprintf(file,"\t\n\t\t%s\n\t\t%i\n", + result->summary, result->result); + if (result->devuri) + fprintf(file,"\t\t%s\n\t\t", result->devuri); + if (result->details) { + char *c; + c = xmlescape(result->details); + fprintf(file,"\t\t%s\n", c); + free(c); + } + fprintf(file,"\t\n"); + + + list2 = g_list_next(list2); + } + fprintf(file,"\n"); + + list1 = g_list_next(list1); + } + fprintf(file, "\n"); + fclose(file); +} + +/* Dump all test results in a text formatted file */ +void dump_text(GList *all_tests, char *filename) +{ + FILE *file; + GList *list1, *list2; + struct major_test *test; + struct detailed_result *result; + int nrtotal, nrpass, nrwarn, nrfail; + + file = fopen(filename, "w"); + if (!file) + return; + + fprintf(file, "-------------------------------------------------\n" + " Date: %s \n" + "* *\n" + "* Firmwarekit (release %s) *\n" + "* http://www.linuxfirmwarekit.org *\n" + "* *\n" + "* *\n" + "* For more information on test descriptions *\n" + "* and details on what the PASS/INFO/WARN/FAIL *\n" + "* results mean, go to: Documentation/TestsInfo. *\n" + "* *\n" + "-------------------------------------------------\n\n" + "KERNEL VERSION: %s\n\n\n", + get_time_stamp(), get_lfdk_ver(), get_kernel_ver()); + + + list1 = g_list_first(all_tests); + + /* Firt get summary of test report */ + nrtotal = 0; + nrpass = 0; + nrfail = 0; + nrwarn = 0; + + while (list1) { + test = (struct major_test *)list1->data; + + nrtotal++; + switch (test->result) { + case PASS: + case INFO: + nrpass++; + break; + case WARN: + nrwarn++; + break; + case FAIL: + nrfail++; + break; + } + + list1 = g_list_next(list1); + } + fprintf(file, "SUMMARY: %d Fails, %d Warns, %d Pass, %d Total\n\n", + nrfail, nrwarn, nrpass, nrtotal); + + list1 = g_list_first(all_tests); + while (list1) { + test = (struct major_test *)list1->data; + + + fprintf(file, "=================================================\n" + "* Plugin name: %s\n" + "* Result: %s\n\n" + "* Title: %s\n" + "* Description: %s\n" + "================================================\n\n", + test->ID,result_to_ascii(test->result),test->name, + test->description->details); + + + list2 = g_list_first(test->details); + while (list2) { + result = (struct detailed_result*)list2->data; + + fprintf(file, "[%s]-%s\n\n", result_to_ascii(result->result), + result->summary); + if (result->details) + fprintf(file, "%s\n\n", result->details); + + list2 = g_list_next(list2); + } + list1 = g_list_next(list1); + } + fclose(file); +} Index: linuxfirmwarekit/usb.c =================================================================== --- linuxfirmwarekit/usb.c (revision 218) +++ linuxfirmwarekit/usb.c (revision 257) @@ -85,6 +85,7 @@ system("/bin/cp results/* /usbkey &> /dev/null"); system("/bin/cp acpi.dump /usbkey &> /dev/null"); system("/bin/cp DSDT.* /usbkey &> /dev/null"); + system("/bin/cp *.log /usbkey &> /dev/null"); system("/bin/umount /usbkey &> /dev/null"); devcount ++; } while (entry); Index: linuxfirmwarekit/ssh.c =================================================================== --- linuxfirmwarekit/ssh.c (revision 218) +++ linuxfirmwarekit/ssh.c (revision 257) @@ -68,7 +68,7 @@ /* Copy results into tmp dir */ ret1 = snprintf (command, 4096, "cp /root/acpi.dump /root/DSDT* " - "/root/results/*" + "/root/results/* /root/*.log" " /var/log/firmwarekit/%s", result_dir); ret2 = system(command); Index: linuxfirmwarekit/powertop/powertop.c =================================================================== --- linuxfirmwarekit/powertop/powertop.c (revision 0) +++ linuxfirmwarekit/powertop/powertop.c (revision 257) @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2006, Intel Corporation + * + * This file is part of the Linux-ready Firmware Developer Kit + * + * This program file is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation;version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program in a file named COPYING; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + */ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include "../biostest.h" + + +/* Display the PowerTop interactive window. Run the powertop tool + (plugins/powertop_install/powertop) of the user chooses 'Run', + and go back to the previous menu if user chooses 'Back'. +*/ + +static void do_powertop(void) +{ + int myHelloWin; + newtComponent myHelloText, myHelloForm, myBack, myRun; + newtComponent resu; + int W,H; + + + newtGetScreenSize(&W,&H); + + myHelloWin = newtOpenWindow(1+(W-55)/2, 1+(H-11)/2, 55, 11,"PowerTop 1.8"); + myHelloForm = newtForm(NULL,NULL,0); + myHelloText = newtTextbox(3,2,52,8, 0); + newtFormAddComponent(myHelloForm, myHelloText); + + newtTextboxSetText(myHelloText, + "PowerTop is a tool that monitors and displays the\n" + "current power usage, C-state and P-state data of\n" + "your CPU. You can use this information to analyse\n" + "your mostly-idle system and uncover any possible\n" + "firmware bugs."); + + + myRun = newtButton(30,7, "Run"); + newtFormAddComponent(myHelloForm, myRun); + + myBack = newtButton(43,7, "Back"); + newtFormAddComponent(myHelloForm, myBack); + + newtDrawForm(myHelloForm); + newtRefresh(); + + /* If the user chooses 'Run' */ + while (1) { + resu = newtRunForm(myHelloForm); + if (resu == myRun) { + newtSuspend(); + fprintf(stderr,"\n\n++++++++++++++++++++++++++++++++++++++++++++++++++\n" + "Press 'Q' to return to the firmware test kit\n" + "++++++++++++++++++++++++++++++++++++++++++++++++++\n\n"); + + system("./plugins/powertop_install/powertop"); + + newtResume(); + newtRefresh(); + + } + else + break; + } + + /* Return back to the previous menu */ + newtPopWindow(); + +} + +void run_test(void) +{ + register_interactive_test("PowerTop version 1.8", do_powertop); +} Index: linuxfirmwarekit/powertop/powertop.info =================================================================== --- linuxfirmwarekit/powertop/powertop.info (revision 0) +++ linuxfirmwarekit/powertop/powertop.info (revision 257) @@ -0,0 +1 @@ +link ../Documentation/TestsInfo/powertop.info \ No newline at end of file Property changes on: linuxfirmwarekit/powertop/powertop.info ___________________________________________________________________ Name: svn:special + * Index: linuxfirmwarekit/powertop/Makefile =================================================================== --- linuxfirmwarekit/powertop/Makefile (revision 0) +++ linuxfirmwarekit/powertop/Makefile (revision 257) @@ -0,0 +1,47 @@ +override CFLAGS += `pkg-config --cflags glib-2.0` -fPIC -I.. +LDFLAGS = `pkg-config --libs glib-2.0` + + +all: .depend powertop.so powertop_install + +powertop-1.8.tar.gz: + wget http://www.linuxpowertop.org/download/powertop-1.8.tar.gz + cp powertop-1.8.tar.gz ../initramfs/srpms/ + + +powertop_install: powertop-1.8.tar.gz + mkdir -vp ../plugins/powertop_install || : + mkdir -vp powertop_install || : + tar -zxvf powertop-1.8.tar.gz + chmod -R u+rwx powertop-1.8 + cd powertop-1.8 ; make + cp -v powertop-1.8/powertop ../plugins/powertop_install + cp -v powertop-1.8/powertop powertop_install + + +powertop.so: powertop.o + gcc --shared powertop.o $(LDFLAGS) -o powertop.so + cp -v powertop.so ../plugins + + +clean: + rm -rf *~ *.o + rm -f powertop.so + rm -rf powertop-1.8 + rm -rf powertop_install + + + +# most of the makefile remains as it was before. +# at the bottom, we add these lines: + +# rule for building dependency lists, and writing them to a file +# named ".depend". +.depend: + rm -f .depend + gccmakedep -f- -- $(CFLAGS) -- *.c > .depend + +# now add a line to include the dependency list. +include .depend + + Index: linuxfirmwarekit/msrpoke/Makefile =================================================================== --- linuxfirmwarekit/msrpoke/Makefile (revision 218) +++ linuxfirmwarekit/msrpoke/Makefile (revision 257) @@ -1,11 +1,11 @@ -override CFLAGS += `pkg-config --cflags glib-2.0` -fPIC -I.. +override CFLAGS += `pkg-config --cflags glib-2.0` -fPIC -fno-stack-protector -I.. LDFLAGS = -nodefaultlibs -L../initramfs/data/lib -L../initramfs/data/usr/lib `pkg-config --libs glib-2.0` all: msrpoke.so msrpoke.so: msrpoke.o .depend - gcc --shared msrpoke.o $(LDFLAGS) -o msrpoke.so -lnewt + gcc -shared msrpoke.o $(LDFLAGS) -o msrpoke.so -lnewt cp msrpoke.so ../plugins clean: Index: linuxfirmwarekit/todo.txt =================================================================== --- linuxfirmwarekit/todo.txt (revision 218) +++ linuxfirmwarekit/todo.txt (revision 257) @@ -2,25 +2,12 @@ ======== Priority ======== -- fan: done -- Make acpi list global: done -- network upload: done -- FADT 32/64 - done -- microcode evel check: done -- Test list w/ detailed desc. of errors/warns/passes: done -- Readable results: done -- known/kb list: in progress -- ia64: release 3 -- EFI release 3 -- AML method call: release 3 -- _SUN AML method call: release 3 -- TPM: will not do for now +- ia64: release 4 +- EFI release 4 +- Improve suspend: release 4 +- Results comparison tool: in progress ============ Nice to have ============ -- 100% auto mode: done -- abort lmbench: done -- Results comparison tool: in progress -- EDID DDC (video probing): release 3 -- Improve suspend: release 3 +- EDID DDC (video probing): release 4 Index: linuxfirmwarekit/os2gap/Makefile =================================================================== --- linuxfirmwarekit/os2gap/Makefile (revision 218) +++ linuxfirmwarekit/os2gap/Makefile (revision 257) @@ -5,7 +5,7 @@ all: os2gap.so os2gap.so: os2gap.o .depend - gcc --shared os2gap.o $(LDFLAGS) -o os2gap.so + gcc -shared os2gap.o $(LDFLAGS) -o os2gap.so cp os2gap.so ../plugins clean: Index: linuxfirmwarekit/ui.c =================================================================== --- linuxfirmwarekit/ui.c (revision 218) +++ linuxfirmwarekit/ui.c (revision 257) @@ -65,10 +65,15 @@ void init_results_ui(void) { int myHelloWin; + char TitleText[4096]; + + memset(TitleText, 0, 4095); + sprintf(TitleText, " Linux-ready Firmware Developer Kit - Release %s - (C) 2007 Intel Corporation", + get_lfdk_ver()); newtComponent myHelloText, myHelloForm; newtInit(); newtCls(); - newtDrawRootText(0,0, " Linux-ready Firmware Developer Kit - Release 2 - (C) 2007 Intel Corporation"); + newtDrawRootText(0,0,TitleText); newtPushHelpLine( " Linux-ready Firmware Developer Kit"); int W,H; Index: linuxfirmwarekit/libstandalone.c =================================================================== --- linuxfirmwarekit/libstandalone.c (revision 218) +++ linuxfirmwarekit/libstandalone.c (revision 257) @@ -25,6 +25,11 @@ #include #include +#include +#include +#include +#include + #include #include "biostest.h" @@ -176,89 +181,3 @@ fclose(file); } -void load_dsdt_ssdts(void) { - - int ret, i; - static int current_ssdt = 0; - char cmd_prefix[1024]; - char command[4096]; - char line[4096]; - char filen[1024]; - FILE *file; - - - /* First, find plugins/ directory where acpi tools (acpidump, acpixtract, etc.) - * are located (should exist after compiling "acpicompile" plugin). - * Since we're standalone, we could be called from a few different - * places. */ - if (access("plugins", R_OK)) - sprintf(cmd_prefix, "../plugins/"); - else - sprintf(cmd_prefix, "plugins/"); - - /* create hex-dump format of all acpi tables in file 'acpi.dump' */ - sprintf(command, "%sacpidump > acpi.dump &> /dev/null", cmd_prefix); - system(command); - if (access("acpi.dump", R_OK)) - fprintf(stderr,"WARN (acpidump): failed to create acpi.dump.\n"); - - /* use 'acpidump' file to extract dsdt and ssdt tables - * in binary format, creates DSDT.dat and SSDT*.dat */ - sprintf(command, "%sacpixtract acpi.dump &> /dev/null", cmd_prefix); - system(command); - if (access("DSDT.dat", R_OK)) { - ret = system("cat /proc/acpi/dsdt > DSDT.dat"); - if (ret != EXIT_SUCCESS) { - fprintf(stderr,"WARN (acpixtract): failed to create DSDT.dat.\n"); - return; - } - } - - /* Disassemble DSDT.dat with iasl, will create DSDT.dsl */ - sprintf(command, "%siasl -d DSDT.dat &>/dev/null", cmd_prefix); - system(command); - file = fopen("DSDT.dsl", "r"); - if (!file) - fprintf(stderr,"WARN (iasl): failed to create DSDT.dsl.\n"); - - /* Save the contents of the dsdt in our list */ - while (!feof(file)) { - if (fgets(line, 4095, file)==NULL) - break; - ssdt[current_ssdt] = g_list_append(ssdt[current_ssdt], strdup(line)); - } - fclose(fi