title: Why is clflush an unprivileged instruction in x86?
body: <p>While investigating on cache attacks against x86 Intel processors, I fail to understand why <code>clflush</code> is an unprivileged instruction.</p>
  <p>The only use case of <code>clflush</code> I can think of is to flush the previous cache contents before a context switch. But then again, context switches are performed by the OS, which means it wouldn't have any problem even if <code>clflush</code> was a privileged instruction.</p>
  <p>So my question is: <br />
  <strong>Why is <code>clflush</code> an unprivileged instruction? Are there any use cases where it must be unprivileged?</strong></p>