1c7a14a6f24c0246364085a047d96afc2faae00acrobbiew/***************************************************************************
2c7a14a6f24c0246364085a047d96afc2faae00acrobbiew                          HTaffinity.c  -  description
3c7a14a6f24c0246364085a047d96afc2faae00acrobbiew                             -------------------
4c7a14a6f24c0246364085a047d96afc2faae00acrobbiew    email                : sonic,zhang@intel.com
5c7a14a6f24c0246364085a047d96afc2faae00acrobbiew ***************************************************************************/
6c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
7c7a14a6f24c0246364085a047d96afc2faae00acrobbiew/***************************************************************************
8c7a14a6f24c0246364085a047d96afc2faae00acrobbiew *                                                                         *
9c7a14a6f24c0246364085a047d96afc2faae00acrobbiew *   This program is free software; you can redistribute it and/or modify  *
10c7a14a6f24c0246364085a047d96afc2faae00acrobbiew *   it under the terms of the GNU General Public License as published by  *
11c7a14a6f24c0246364085a047d96afc2faae00acrobbiew *   the Free Software Foundation; either version 2 of the License, or     *
12c7a14a6f24c0246364085a047d96afc2faae00acrobbiew *   (at your option) any later version.                                   *
13c7a14a6f24c0246364085a047d96afc2faae00acrobbiew *                                                                         *
14c7a14a6f24c0246364085a047d96afc2faae00acrobbiew ***************************************************************************/
15ef77253961f909f87e82e6d2b620e87af33e9665yaberauneya#include "ht_utils.h"
16c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#include <sys/syscall.h>
17c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#include <sys/types.h>
18c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#include <unistd.h>
19f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak#include <sys/wait.h>
20c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#include <stdio.h>
21c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#include <stdlib.h>
22c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#include <string.h>
23c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#include "test.h"
24c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
25fbac41af9f2c5e34864b71f0eb94cdb3a2c08038subrata_modakchar *TCID = "smt_smp_affinity";
26c7a14a6f24c0246364085a047d96afc2faae00acrobbiewint TST_TOTAL = 3;
27c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
28c7a14a6f24c0246364085a047d96afc2faae00acrobbiew/************************************************************************************
29c7a14a6f24c0246364085a047d96afc2faae00acrobbiewint set_affinity(pid_t pid, unsigned int len, unsigned long *mask_ptr)
30c7a14a6f24c0246364085a047d96afc2faae00acrobbiewpid - pid of the process whose affinity is desired to be set.
31c7a14a6f24c0246364085a047d96afc2faae00acrobbiewmask_ptr - pointer to the new cpu_affinity_mask.
32c7a14a6f24c0246364085a047d96afc2faae00acrobbiewlen - length in bytes of the bitmask pointed to by user_mask_ptr.
33c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
34c7a14a6f24c0246364085a047d96afc2faae00acrobbiewint get_affinity(pid_t pid, unsigned int len, unsigned long *mask_ptr)
35c7a14a6f24c0246364085a047d96afc2faae00acrobbiewpid - pid of the process whose affinity is being read.
36c7a14a6f24c0246364085a047d96afc2faae00acrobbiewmask_ptr pointer to store the current affinity information.
37c7a14a6f24c0246364085a047d96afc2faae00acrobbiewlen - length in bytes of the bitmask pointed to by user_mask_ptr.
38c7a14a6f24c0246364085a047d96afc2faae00acrobbiew************************************************************************************/
39c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
40c7a14a6f24c0246364085a047d96afc2faae00acrobbiew//Any application program can invoke these system call using sched_setaffinity() and sched_getaffinity(),
41c7a14a6f24c0246364085a047d96afc2faae00acrobbiew//with the syntax mentioned in the previous section, after declaring the interface as:
4263f55aa0948d60f8cbe6ddf45f0731f4d7c8136avapier
4363f55aa0948d60f8cbe6ddf45f0731f4d7c8136avapier#define sched_setaffinity(pid, cpusetsize, mask) syscall(__NR_sched_setaffinity, pid, cpusetsize, mask)
4463f55aa0948d60f8cbe6ddf45f0731f4d7c8136avapier#define sched_getaffinity(pid, cpusetsize, mask) syscall(__NR_sched_getaffinity, pid, cpusetsize, mask)
45c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
46c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#define AFFINITY_NAME "affinity"
47c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#define PROCFS_PATH "/proc/"
48c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
49c7a14a6f24c0246364085a047d96afc2faae00acrobbiewint HT_SetAffinity()
50c7a14a6f24c0246364085a047d96afc2faae00acrobbiew{
51f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	unsigned int mask;
52c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	pid_t pid;
53354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	int result = 1;
54c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	int cpu_count, i, j, k, cpuid;
55c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
56354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	pid = getpid();
57c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
58befdb9871ca29fab80453284469ba5fc825ddb49subrata_modak	tst_resm(TINFO, "Set affinity through system call");
59c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
60354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	cpu_count = get_cpu_count();
61354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if (cpu_count == 0) {
62354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		return 0;
63354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	} else if (cpu_count > 32)
64354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		cpu_count = 32;
65c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
66354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	for (i = 0, mask = 0x1; i < cpu_count; i++, mask = mask << 1) {
67c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		tst_resm(TINFO, "Set test process affinity.");
68354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		printf("mask: %x\n", mask);
69c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
70c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		sched_setaffinity(pid, sizeof(unsigned long), &mask);
71c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
72354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		for (j = 0; j < 10; j++) {
73354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			for (k = 0; k < 10; k++) {
74354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (fork() == 0) {
75c7a14a6f24c0246364085a047d96afc2faae00acrobbiew					system("ps > /dev/null");
76c7a14a6f24c0246364085a047d96afc2faae00acrobbiew					exit(0);
77c7a14a6f24c0246364085a047d96afc2faae00acrobbiew				}
78c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			}
79c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
80c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			sleep(1);
81c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
82354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if (get_current_cpu(pid) != i)
83c7a14a6f24c0246364085a047d96afc2faae00acrobbiew				break;
84c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		}
85c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
86354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if (j < 10) {
87befdb9871ca29fab80453284469ba5fc825ddb49subrata_modak			tst_resm(TINFO, "...Error");
88354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			result = 0;
89354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		} else
90befdb9871ca29fab80453284469ba5fc825ddb49subrata_modak			tst_resm(TINFO, "...OK");
91c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
92c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	}
93c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
94354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	for (i = 0, mask = 0x3; i < cpu_count - 1; i++, mask = mask << 1) {
95c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		tst_resm(TINFO, "Set test process affinity.");
96354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		printf("mask: %x\n", mask);
97c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
98c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		sched_setaffinity(pid, sizeof(unsigned long), &mask);
99c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
100354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		for (j = 0; j < 10; j++) {
101354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			for (k = 0; k < 10; k++) {
102354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao				if (fork() == 0) {
103c7a14a6f24c0246364085a047d96afc2faae00acrobbiew					system("ps > /dev/null");
104c7a14a6f24c0246364085a047d96afc2faae00acrobbiew					exit(0);
105c7a14a6f24c0246364085a047d96afc2faae00acrobbiew				}
106c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			}
107c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
108c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			sleep(1);
109c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
110354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			cpuid = get_current_cpu(pid);
111354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			if (cpuid != i && cpuid != i + 1)
112c7a14a6f24c0246364085a047d96afc2faae00acrobbiew				break;
113c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		}
114c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
115354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		if (j < 10) {
116befdb9871ca29fab80453284469ba5fc825ddb49subrata_modak			tst_resm(TINFO, "...Error");
117354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao			result = 0;
118354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		} else
119befdb9871ca29fab80453284469ba5fc825ddb49subrata_modak			tst_resm(TINFO, "...OK");
120c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
121c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	}
122c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
123df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper	if (result)
124c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		return 1;
125c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	else
126c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		return 0;
127c7a14a6f24c0246364085a047d96afc2faae00acrobbiew}
128c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
129c7a14a6f24c0246364085a047d96afc2faae00acrobbiewunsigned long get_porc_affinity(pid_t pid)
130c7a14a6f24c0246364085a047d96afc2faae00acrobbiew{
131c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	FILE *pfile;
132c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
133c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	sprintf(buf, "%s%d/%s%c", PROCFS_PATH, pid, AFFINITY_NAME, 0);
134c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
135354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if ((pfile = fopen(buf, "r")) == NULL)
136c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		return 0;
137c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
138354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if (fgets(buf, 255, pfile) == NULL) {
139c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		fclose(pfile);
140c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		return 0;
141c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	}
142c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
143c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	fclose(pfile);
144c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
145c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	return atol(buf);
146c7a14a6f24c0246364085a047d96afc2faae00acrobbiew}
147c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
148c7a14a6f24c0246364085a047d96afc2faae00acrobbiewint HT_GetAffinity()
149c7a14a6f24c0246364085a047d96afc2faae00acrobbiew{
150f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	unsigned int mask[2], mask1[2];
151c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	pid_t pid;
152c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
153f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	mask[0] = 0x1;
154f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	pid = getpid();
155c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
156befdb9871ca29fab80453284469ba5fc825ddb49subrata_modak	tst_resm(TINFO, "Get affinity through system call");
157c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
158f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	sched_setaffinity(pid, sizeof(mask), mask);
159c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
160c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	sleep(1);
161c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
162f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	sched_getaffinity(pid, sizeof(mask), mask1);
163c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
164354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if (mask[0] == 0x1 && mask[0] == mask1[0]) {
165f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak		mask[0] = 0x2;
166f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak		sched_setaffinity(pid, sizeof(mask), mask);
167c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
168c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		sleep(1);
169c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
170f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak		sched_getaffinity(pid, sizeof(mask), mask1);
171c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
172f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak		if (mask[0] == 0x2 && mask[0] == mask1[0])
173c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			return 1;
174c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		else
175c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			return 0;
176354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	} else
177c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		return 0;
178c7a14a6f24c0246364085a047d96afc2faae00acrobbiew}
179c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
180c7a14a6f24c0246364085a047d96afc2faae00acrobbiewint HT_InheritAffinity()
181c7a14a6f24c0246364085a047d96afc2faae00acrobbiew{
182f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	unsigned int mask[2];
183c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	pid_t pid;
184f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	int status;
185f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	mask[0] = 0x2;
186f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	pid = getpid();
187c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
188f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	sched_setaffinity(pid, sizeof(mask), mask);
189c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
190c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	sleep(1);
191f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	pid = fork();
192354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if (pid == 0) {
193c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		sleep(1);
194f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak		sched_getaffinity(pid, sizeof(mask), mask);
195f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak		if (mask[0] == 0x2)
196f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak			exit(0);
197c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
198f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak		else
199f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak			exit(1);
200f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	} else if (pid < 0) {
201befdb9871ca29fab80453284469ba5fc825ddb49subrata_modak		tst_resm(TINFO, "Inherit affinity:fork failed!");
202f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak		return 0;
203f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	}
204f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	waitpid(pid, &status, 0);
205c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
206f1de0dbc4f8dc1cd022903a1a9734f809041e292subrata_modak	if (WEXITSTATUS(status) == 0) {
207befdb9871ca29fab80453284469ba5fc825ddb49subrata_modak		tst_resm(TINFO, "Inherited affinity from parent process");
208c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		return 1;
209354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	} else
210c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		return 0;
211c7a14a6f24c0246364085a047d96afc2faae00acrobbiew}
212c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
213c7a14a6f24c0246364085a047d96afc2faae00acrobbiew// return 0 means Pass, return 1 means Fail
214c7a14a6f24c0246364085a047d96afc2faae00acrobbiewint main(int argc, char *argv[])
215c7a14a6f24c0246364085a047d96afc2faae00acrobbiew{
216c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
2178b0ca7e9a5e7dcab8d7cbad0b6f0c808798bdc53Garrett Cooper#if (!defined __i386__ && !defined __x86_64__)
218354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	tst_brkm(TCONF, NULL,
219354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao		 "This test suite can only execute on x86 architecture.");
220c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#else
221354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	if (!check_ht_capability()) {
222c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
223df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper		if (HT_GetAffinity())
224c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			tst_resm(TPASS, "System call getaffinity() is OK.");
225c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		else
226c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			tst_resm(TFAIL, "System call getaffinity() is error.");
227c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
228c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		printf("\n");
229c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
230df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper		if (HT_InheritAffinity())
231c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			tst_resm(TPASS, "Inheritance of affinity is OK.");
232c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		else
233c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			tst_resm(TFAIL, "Inheritance of affinity is error.");
234c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
235c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		printf("\n");
236c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
237df3eb16e38c6a163b0a7367c885679eed6140964Garrett Cooper		if (HT_SetAffinity())
238c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			tst_resm(TPASS, "System call setaffinity() is OK.");
239c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		else
240c7a14a6f24c0246364085a047d96afc2faae00acrobbiew			tst_resm(TFAIL, "System call setaffinity() is error.");
241354ebb48db8e66a853a58379a4808d5dcd1ceac3Wanlong Gao	} else {
242c7a14a6f24c0246364085a047d96afc2faae00acrobbiew		tst_brkm(TCONF, NULL, "HT is not enabled or not supported.");
243c7a14a6f24c0246364085a047d96afc2faae00acrobbiew	}
244c7a14a6f24c0246364085a047d96afc2faae00acrobbiew#endif
245c7a14a6f24c0246364085a047d96afc2faae00acrobbiew
2462c28215423293e443469a07ae7011135d058b671Garrett Cooper	tst_exit();
247ec6edca7aa42b6affd989ef91b5897f96795e40fChris Dearman}
248