History

Merge branch 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 cache allocation interface from Thomas Gleixner: "This provides support for Intel's Cache Allocation Technology, a cache partitioning mechanism. The interface is odd, but the hardware interface of that CAT stuff is odd as well. We tried hard to come up with an abstraction, but that only allows rather simple partitioning, but no way of sharing and dealing with the per package nature of this mechanism. In the end we decided to expose the allocation bitmaps directly so all combinations of the hardware can be utilized. There are two ways of associating a cache partition: - Task A task can be added to a resource group. It uses the cache partition associated to the group. - CPU All tasks which are not member of a resource group use the group to which the CPU they are running on is associated with. That allows for simple CPU based partitioning schemes. The main expected user sare: - Virtualization so a VM can only trash only the associated part of the cash w/o disturbing others - Real-Time systems to seperate RT and general workloads. - Latency sensitive enterprise workloads - In theory this also can be used to protect against cache side channel attacks" [ Intel RDT is "Resource Director Technology". The interface really is rather odd and very specific, which delayed this pull request while I was thinking about it. The pull request itself came in early during the merge window, I just delayed it until things had calmed down and I had more time. But people tell me they'll use this, and the good news is that it is _so_ specific that it's rather independent of anything else, and no user is going to depend on the interface since it's pretty rare. So if push comes to shove, we can just remove the interface and nothing will break ] * 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (31 commits) x86/intel_rdt: Implement show_options() for resctrlfs x86/intel_rdt: Call intel_rdt_sched_in() with preemption disabled x86/intel_rdt: Update task closid immediately on CPU in rmdir and unmount x86/intel_rdt: Fix setting of closid when adding CPUs to a group x86/intel_rdt: Update percpu closid immeditately on CPUs affected by changee x86/intel_rdt: Reset per cpu closids on unmount x86/intel_rdt: Select KERNFS when enabling INTEL_RDT_A x86/intel_rdt: Prevent deadlock against hotplug lock x86/intel_rdt: Protect info directory from removal x86/intel_rdt: Add info files to Documentation x86/intel_rdt: Export the minimum number of set mask bits in sysfs x86/intel_rdt: Propagate error in rdt_mount() properly x86/intel_rdt: Add a missing #include MAINTAINERS: Add maintainer for Intel RDT resource allocation x86/intel_rdt: Add scheduler hook x86/intel_rdt: Add schemata file x86/intel_rdt: Add tasks files x86/intel_rdt: Add cpus file x86/intel_rdt: Add mkdir to resctrl file system x86/intel_rdt: Add "info" files to resctrl file system ...

Linus Torvalds committed 9 years ago

Commit eb254f32 parents f79f7b1 76ae05420 files · +2320 −25Browse files

Showing the changes to include/linux (2 of 20 files). Show all

Unified · Split

2 files
  1. include/linux/cacheinfo.h +3 −0
  2. include/linux/sched.h +3 −0
include/linux/cacheinfo.h+3−0
@@ -18,6 +18,7 @@ enum cache_type { · 17 unmodified lines
1818
1919 /**
2020 * struct cacheinfo - represent a cache leaf node
21+ * @id: This cache's id. It is unique among caches with the same (type, level).
2122 * @type: type of the cache - data, inst or unified
2223 * @level: represents the hierarchy in the multi-level cache
2324 * @coherency_line_size: size of each cache line usually representing
@@ -44,6 +45,7 @@ enum cache_type { · 20 unmodified lines
4445 * keeping, the remaining members form the core properties of the cache
4546 */
4647 struct cacheinfo {
48+ unsigned int id;
4749 enum cache_type type;
4850 unsigned int level;
4951 unsigned int coherency_line_size;
@@ -61,6 +63,7 @@ struct cacheinfo { · 11 unmodified lines
6163 #define CACHE_WRITE_ALLOCATE BIT(3)
6264 #define CACHE_ALLOCATE_POLICY_MASK \
6365 (CACHE_READ_ALLOCATE | CACHE_WRITE_ALLOCATE)
66+#define CACHE_ID BIT(4)
6467
6568 struct device_node *of_node;
6669 bool disable_sysfs;
include/linux/sched.h+3−0
@@ -1821,6 +1821,9 @@ struct task_struct { · 1820 unmodified lines
18211821 /* cg_list protected by css_set_lock and tsk->alloc_lock */
18221822 struct list_head cg_list;
18231823 #endif
1824+#ifdef CONFIG_INTEL_RDT_A
1825+ int closid;
1826+#endif
18241827 #ifdef CONFIG_FUTEX
18251828 struct robust_list_head __user *robust_list;
18261829 #ifdef CONFIG_COMPAT

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t