Ejemplo n.º 1
0
/**
 * corrupted_dcache
 * @brief "corrupted D-cache" error injection handler
 *
 * This will inject a corrupted D-cache error onto the system
 *
 * @param ei_func errinjct functionality
 * @return 0 on success, !0 otherwise
 */
int corrupted_dcache(ei_function *ei_func)
{
	int rc;

	if (ext_help || check_cpu_arg() || check_token_arg()) {
		corrupted_dcache_usage(ei_func);
		return 1;
	}

	if ((action < 0) || (action > MAX_DCACHE_ACTION_CODE)) {
		perr(0, "Invalid action code (%d)", action);
		corrupted_dcache_usage(ei_func);
		return 1;
	}

	if (!be_quiet) {
		printf("Injecting a %s error\n", ei_func->name);
		printf("Action: %d - %s\n", action, action_codes[action]);
	}

	if (dryrun)
		return 0;

	err_buf[0] = action;

	rc = do_rtas_errinjct(ei_func);

	return rc;
}
Ejemplo n.º 2
0
/**
 * ei_close
 * @brief Closes the RTAS error injection facility
 *
 * @param ei_func errinjct functionality
 * @return 0 on success, !0 otherwise
 */
int ei_close(ei_function *ei_func)
{
	int rc;

	if (ext_help || check_token_arg()) {
		ei_close_usage(ei_func);
		return 1;
	}

	if (verbose || dryrun)
		printf("Closing RTAS error injection facility with token %d\n",
			ei_token);

	if (dryrun)
		return 0;

	rc = close_rtas_errinjct(ei_func);

	if ((rc == 0) && verbose)
		printf("RTAS error injection facility closed.\n");

	return rc;
}
Ejemplo n.º 3
0
/**
 * corrupted_icache
 * @brief "corrupted I-cache" error injection handler
 *
 * @param ei_func errinjct functionality
 * @return 0 on success, !0 otherwise
 */
int corrupted_icache(ei_function *ei_func)
{
	int rc;

	if (ext_help || check_cpu_arg() || check_token_arg()) {
		corrupted_icache_usage(ei_func);
		return 1;
	}

	if ((action < 0) || (action > 3)) {
		perr(0, "Invalid action code (%d)", action);
		corrupted_icache_usage(ei_func);
		return 1;
	}

	if ((nature < 0) || (nature > 2)) {
		perr(0, "Invalid nature code (%d)", nature);
		corrupted_icache_usage(ei_func);
		return 1;
	}

	err_buf[0] = action;
	err_buf[1] = nature;

	if (!be_quiet) {
		printf("Injecting a %s error\n", ei_func->name);
		printf("Action: %d - %s\n", action, action_codes[action]);
		printf("Nature: %d - %s\n", nature, nature_codes[nature]);
	}

	if (dryrun)
		return 0;

	rc = do_rtas_errinjct(ei_func);

	return rc;
}