History log of /gem5/src/arch/x86/faults.hh
Revision Date Author Comments
# 12334:e0ab29a34764 30-Nov-2017 Gabe Black <gabeblack@google.com>

misc: Rename misc.(hh|cc) to logging.(hh|cc)

These files aren't a collection of miscellaneous stuff, they're the
definition of the Logger interface, and a few utility macros for
calling into that interface (panic, warn, etc.).

Change-Id: I84267ac3f45896a83c0ef027f8f19c5e9a5667d1
Reviewed-on: https://gem5-review.googlesource.com/6226
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>


# 11218:d135bc832ffe 16-Nov-2015 Swapnil Haria <swapnilh@cs.wisc.edu>

x86: Invalidating TLB entry on page fault

As per the x86 architecture specification, matching TLB entries need to be
invalidated on a page fault. For instance, after a page fault due to inadequate
protection bits on a TLB hit, the TLB entry needs to be invalidated. This
behavior is clearly specified in the x86 architecture manuals from both AMD and
Intel. This invalidation is missing currently in gem5, due to which linux
kernel versions 3.8 and up cannot be simulated efficiently. This is exposed by
a linux optimisation in commit e4a1cc56e4d728eb87072c71c07581524e5160b1, which
removes a tlb flush on updating page table entries in x86.

Testing: Linux kernel versions 3.8 onwards were booting very slowly in FS mode,
due to repeated page faults (~300000 before the first print statement in a
bash file). Ensured that page fault rate drops drastically and observed
reduction in boot time from order of hours to minutes for linux kernel v3.8
and v3.11


# 10805:f2c472d4ff9c 29-Apr-2015 Nilay Vaish <nilay@cs.wisc.edu>

x86: change divide-by-zero fault to divide-error
Same exception is raised whether division with zero is performed or the
quotient is greater than the maximum value that the provided space can hold.
Divide-by-Zero is the AMD terminology, while Divide-Error is Intel's.


# 10687:276da6265ab8 11-Feb-2015 Andreas Sandberg <Andreas.Sandberg@ARM.com>

sim: Move the BaseTLB to src/arch/generic/

The TLB-related code is generally architecture dependent and should
live in the arch directory to signify that.


# 10417:710ee116eb68 27-Sep-2014 Andreas Hansson <andreas.hansson@arm.com>

arch: Use const StaticInstPtr references where possible

This patch optimises the passing of StaticInstPtr by avoiding copying
the reference-counting pointer. This avoids first incrementing and
then decrementing the reference-counting pointer.


# 9873:530a50b10ebe 18-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Expose the interrupt vector in faults

This patch allows a hardware virtualized CPU to discover which interrupt
to deliver to the guest.


# 8902:75b524b64c28 19-Mar-2012 Andreas Hansson <andreas.hansson@arm.com>

gcc: Clean-up of non-C++0x compliant code, first steps

This patch cleans up a number of minor issues aiming to get closer to
compliance with the C++0x standard as interpreted by gcc and clang
(compile with std=c++0x and -pedantic-errors). In particular, the
patch cleans up enums where the last item was succeded by a comma,
namespaces closed by a curcly brace followed by a semi-colon, and the
use of the GNU-extension typeof (replaced by templated functions). It
does not address variable-length arrays, zero-size arrays, anonymous
structs, range expressions in switch statements, and the use of long
long. The generated CPU code also has a large number of issues that
remain to be fixed, mainly related to overflows in implicit constant
conversion (due to shifts).


# 8740:253aeee61e66 30-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Remove FULL_SYSTEM from the x86 faults.


# 8591:8f23aeaf6a91 27-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

Faults: Replace calls to genMachineCheckFault with M5PanicFault.


# 8229:78bf55f23338 15-Apr-2011 Nathan Binkert <nate@binkert.org>

includes: sort all includes


# 7714:32496de51017 22-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Implement genMachineCheckFault.

Even though this shouldn't ever be used, it might get called speculatively and
shouldn't panic.


# 7681:61e31534522d 14-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make unrecognized instructions behave better in x86.


# 7678:f19b6a3a8cec 13-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

Faults: Pass the StaticInst involved, if any, to a Fault's invoke method.

Also move the "Fault" reference counted pointer type into a separate file,
sim/fault.hh. It would be better to name this less similarly to sim/faults.hh
to reduce confusion, but fault.hh matches the name of the type. We could change
Fault to FaultPtr to match other pointer types, and then changing the name of
the file would make more sense.


# 7625:b1e69203bae9 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make the TLB fault instead of panic when something is unmapped in SE mode.

The fault object, if invoked, would then panic. This is a bit less direct, but
it means speculative execution won't panic the simulator.


# 7087:fb8d5786ff30 24-May-2010 Nathan Binkert <nate@binkert.org>

copyright: Change HP copyright on x86 code to be more friendly


# 6049:595b5016f6d5 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the STARTUP IPI.


# 6048:65a321a3a691 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the INIT IPI.


# 6023:47b4fcb10c11 09-Apr-2009 Nathan Binkert <nate@binkert.org>

tlb: More fixing of unified TLB


# 6009:74bc713c71ce 08-Mar-2009 Nathan Binkert <nate@binkert.org>

build: fix compiler warnings in g++ 3.4


# 5909:ecbd27e5d1f8 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a trace flag for tracing faults.


# 5895:569e3b31a868 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the X86 TLB take advantage of delayed translations, and get rid of the fake TLB miss faults.


# 5881:73c0aaaaf186 23-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Pass whether an access was a read/write/fetch so faults can behave accordingly.


# 5858:54f64fb1bd62 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: All x86 fault classes now attempt to do something useful.


# 5857:8cd8e1393990 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the fault classes handle error codes better.


# 5851:7bd73614dc1d 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Keep track of the vector for all exceptions/faults.


# 5684:3995b7c2ae86 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Panic when an unimplemented fault is invoked, rather than spinning forever


# 5681:54c2d92f601e 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the x86 interrupt fault kick off the interrupt microcode.


# 5655:74f76480407f 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the local APIC process interrupts and send them to the CPU.


# 5654:340254de2031 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the local APIC handle interrupt messages from the IO APIC.


# 5652:7e710528969a 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the bases for x86 fault class public.


# 5237:6c819dbe8045 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Work on the page table walker, TLB, and related faults.


# 5139:2422708d4fcb 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make faults maintain an error code which gets pushed on the stack.


# 5124:3d8c50376609 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Start implementing the x86 tlb which will handle segmentation permission and limit checks and paging.


# 5114:edcdf9b908ec 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add classes for the actual x86 faults.


# 5004:7d94cedab264 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

Address translation: Make the page table more flexible.
The page table now stores actual page table entries. It is still a templated
class here, but this will be corrected in the near future.


# 4729:99800622a6e8 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the "name" function const.


# 4365:f780e9fad124 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Fix up the base x86 fault object and create a fault to be generated by unimplemented instructions in their microcode. This is useful if certain variations of an instruction are implemented, but, for instance, it's memory based versions aren't.


# 4150:642840fd4652 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added fault generation functions. I would still like to see these go away. The page table fault should be moved into sim/faults.hh because it's a "fake" m5 fault for se mode and shouldn't vary between architectures.


# 4139:385be08269d7 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Added a missing include.


# 4135:58a8bd096de9 04-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Stub x86 Fault class which just panics.


# 4120:3e09b5d32c45 03-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add build hooks for x86.