X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fplatform-powerpc.c;h=b0a35a7dfff4ea9a886513de2260658ea8cf42a6;hp=e2a86318f84803905c0bccc07519499410646a2b;hb=a984595cfb4910ba6f464c69c316f1613f10f894;hpb=c14b12980885edd035322cd3bc87efff444c39b1 diff --git a/discover/platform-powerpc.c b/discover/platform-powerpc.c index e2a8631..b0a35a7 100644 --- a/discover/platform-powerpc.c +++ b/discover/platform-powerpc.c @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -535,6 +536,20 @@ static int save_config(struct platform *p, struct config *config) static bool probe(struct platform *p, void *ctx) { struct platform_powerpc *platform; + struct stat statbuf; + int rc; + + /* we need a device tree and a working nvram binary */ + rc = stat("/proc/device-tree", &statbuf); + if (rc) + return false; + + if (!S_ISDIR(statbuf.st_mode)) + return false; + + rc = process_run_simple(ctx, "nvram", "--print-config", NULL); + if (!WIFEXITED(rc) || WEXITSTATUS(rc) != 0) + return false; platform = talloc(ctx, struct platform_powerpc); list_init(&platform->params); @@ -545,6 +560,7 @@ static bool probe(struct platform *p, void *ctx) static struct platform platform_powerpc = { .name = "powerpc", + .dhcp_arch_id = 0x000e, .probe = probe, .load_config = load_config, .save_config = save_config,