Commit Graph

205 Commits (c112986869517a02b1571e02f339c4ed4e074b29)

Author SHA1 Message Date
FearlessTobi 310c1f50be scope_exit: Make constexpr
Allows the use of the macro in constexpr-contexts.
Also avoids some potential problems when nesting braces inside it.
2 years ago
Merry 9f91d310c6 atomic_ops: Remove volatile qualifier 2 years ago
Fernando Sahmkow 303cd31162 SMMU: Add Android compatibility 2 years ago
Fernando Sahmkow 34a8d0cc8e SMMU: Implement physical memory mirroring 2 years ago
Fernando Sahmkow 0a2536a0df SMMU: Initial adaptation to video_core. 2 years ago
Liam ddda76f9b0 core: track separate heap allocation for linux 2 years ago
Liam 31bf57a310 general: properly support multiple memory instances 2 years ago
Liam 45c87c7e6e core: refactor emulated cpu core activation 2 years ago
GPUCode 9ff8d0f3e6 Address more review comments 2 years ago
Liam 9f91ba1f73 arm: Implement native code execution backend 2 years ago
GPUCode 5938a9582a core: Respect memory permissions in Map 2 years ago
liamwhite d86e88a622
Merge pull request #11995 from FernandoS27/you-dont-need-the-new-iphone
Revert PR #11806 and do a proper fix to the memory handling.
2 years ago
Fernando Sahmkow f1806d237f Memory: Fix invalidation handling from the CPU/Services 2 years ago
Liam 2a255b2d61 kernel: add KPageTableBase
Co-authored-by: Kelebek1 <eeeedddccc@hotmail.co.uk>
2 years ago
liamwhite 689dc4a17b
Merge pull request #11155 from liamwhite/memory3
memory: check page against address space size
2 years ago
liamwhite d3da1e6517
Merge pull request #10990 from comex/ubsan
Fixes and workarounds to make UBSan happier on macOS
2 years ago
Liam 07f71e2620 memory: check page against address space size 2 years ago
Liam d144168442 memory: minimize dependency on process 2 years ago
comex d7c532d889 Fixes and workarounds to make UBSan happier on macOS
There are still some other issues not addressed here, but it's a start.

Workarounds for false-positive reports:

- `RasterizerAccelerated`: Put a gigantic array behind a `unique_ptr`,
  because UBSan has a [hardcoded limit](https://stackoverflow.com/questions/64531383/c-runtime-error-using-fsanitize-undefined-object-has-a-possibly-invalid-vp)
  of how big it thinks objects can be, specifically when dealing with
  offset-to-top values used with multiple inheritance.  Hopefully this
  doesn't have a performance impact.

- `QueryCacheBase::QueryCacheBase`: Avoid an operation that UBSan thinks
  is UB even though it at least arguably isn't.  See the link in the
  comment for more information.

Fixes for correct reports:

- `PageTable`, `Memory`: Use `uintptr_t` values instead of pointers to
  avoid UB from pointer overflow (when pointer arithmetic wraps around
  the address space).

- `KScheduler::Reload`: `thread->GetOwnerProcess()` can be `nullptr`;
  avoid calling methods on it in this case.  (The existing code returns
  a garbage reference to a field, which is then passed into
  `LoadWatchpointArray`, and apparently it's never used, so it's
  harmless in practice but still triggers UBSan.)

- `KAutoObject::Close`: This function calls `this->Destroy()`, which
  overwrites the beginning of the object with junk (specifically a free
  list pointer).  Then it calls `this->UnregisterWithKernel()`.  UBSan
  complains about a type mismatch because the vtable has been
  overwritten, and I believe this is indeed UB.  `UnregisterWithKernel`
  also loads `m_kernel` from the 'freed' object, which seems to be
  technically safe (the overwriting doesn't extend as far as that
  field), but seems dubious.  Switch to a `static` method and load
  `m_kernel` in advance.
2 years ago
Liam a85ce8ea56 k_process: PageTable -> GetPageTable 2 years ago
Kelebek1 6f7cb69c94 Use spans over guest memory where possible instead of copying data. 2 years ago
Fernando Sahmkow da440da9f5 Memory Tracking: Optimize tracking to only use atomic writes when contested with the host GPU 2 years ago
Fernando Sahmkow 47d0d292d5 MemoryTracking: Initial setup of atomic writes. 2 years ago
Fernando Sahmkow 6f90dff293 Address feedback, add CR notice, etc 2 years ago
Fernando Sahmkow 92da86290c Settings: add option to enable / disable reactive flushing 2 years ago
Fernando Sahmkow c6cac2ffaa GPU: Add Reactive flushing 2 years ago
Fernando Sahmkow 7e76c1642c Accuracy Normal: reduce accuracy further for perf improvements in Project Lime 3 years ago
Liam 41d99aa89d memory: rename global memory references to application memory 3 years ago
Liam fb49ec19c1 kernel: use KTypedAddress for addresses 3 years ago
Liam ceda2d280e general: rename CurrentProcess to ApplicationProcess 3 years ago
Merry dc7ab4c5d6 Revert "MemoryManager: use fastmem directly."
This reverts commit af5ecb0b15.
3 years ago
Liam f1a0ce0e70 memory: fix watchpoint use when fastmem is enabled 3 years ago
Fernando Sahmkow af5ecb0b15 MemoryManager: use fastmem directly. 3 years ago
Mai d5684dbe7d
Merge pull request #9415 from liamwhite/dc
memory: correct semantics of data cache management operations
3 years ago
Liam ed37192441 memory: correct semantics of data cache management operations 3 years ago
Liam 985ed1e160 memory: remove DEBUG_ASSERT pointer test 3 years ago
Liam 651f6598ac kernel: implement FlushProcessDataCache 3 years ago
Morph c7e079a5d4 general: Resolve -Wunused-lambda-capture and C5233 3 years ago
bunnei 47b8160666 core: device_memory: Templatize GetPointer(..). 3 years ago
Fernando Sahmkow 5a568b1655 MemoryManager: Fix errors popping out. 3 years ago
Kyle Kienapfel 14e9de6678 code: dodge PAGE_SIZE #define
Some header files, specifically for OSX and Musl libc define PAGE_SIZE to be a number
This is great except in yuzu we're using PAGE_SIZE as a variable

Specific example
`static constexpr u64 PAGE_SIZE = u64(1) << PAGE_BITS;`

PAGE_SIZE PAGE_BITS PAGE_MASK are all similar variables.
Simply deleted the underscores, and then added YUZU_ prefix

Might be worth noting that there are multiple uses in different classes/namespaces
This list may not be exhaustive

Core::Memory   12 bits (4096)
QueryCacheBase 12 bits
ShaderCache    14 bits (16384)
TextureCache   20 bits (1048576, or 1MB)

Fixes #8779
3 years ago
Andrea Pappacoda cdb240f3d4
chore: make yuzu REUSE compliant
[REUSE] is a specification that aims at making file copyright
information consistent, so that it can be both human and machine
readable. It basically requires that all files have a header containing
copyright and licensing information. When this isn't possible, like
when dealing with binary assets, generated files or embedded third-party
dependencies, it is permitted to insert copyright information in the
`.reuse/dep5` file.

Oh, and it also requires that all the licenses used in the project are
present in the `LICENSES` folder, that's why the diff is so huge.
This can be done automatically with `reuse download --all`.

The `reuse` tool also contains a handy subcommand that analyzes the
project and tells whether or not the project is (still) compliant,
`reuse lint`.

Following REUSE has a few advantages over the current approach:

- Copyright information is easy to access for users / downstream
- Files like `dist/license.md` do not need to exist anymore, as
  `.reuse/dep5` is used instead
- `reuse lint` makes it easy to ensure that copyright information of
  files like binary assets / images is always accurate and up to date

To add copyright information of files that didn't have it I looked up
who committed what and when, for each file. As yuzu contributors do not
have to sign a CLA or similar I couldn't assume that copyright ownership
was of the "yuzu Emulator Project", so I used the name and/or email of
the commit author instead.

[REUSE]: https://reuse.software

Follow-up to 01cf05bc75
3 years ago
Kelebek1 458da8a948 Project Andio 3 years ago
Liam 208ed712f4 core/debugger: memory breakpoint support 3 years ago
Liam fb4b3c127f core/debugger: Implement new GDB stub debugger 3 years ago
bunnei af04f8b8e9
Revert "Memory GPU <-> CPU: reduce infighting in the texture cache by adding CPU Cached memory." 4 years ago
Fernando Sahmkow a2d7b2f905 Memory: Don't protect reads on Normal accuracy. 4 years ago
bunnei c0e45a3c78 core: device_memory: Use memory size reported by KSystemControl.
- That way, we can consolidate the memory layout to one place.
4 years ago
Andrew Strelsky 4ce0a650d1
prevent access violation from iob in Memory::IsValidVirtualAddress 4 years ago
yzct12345 5f97f74a9a
memory: Address lioncash's review 4 years ago