Commit graph

39 commits

Author SHA1 Message Date
Thomas Faber
6c93669012
[HAL] Use a spin lock for the DMA adapter list. CORE-16611
This is necessary because HalPutDmaAdapter can be called at DISPATCH_LEVEL.
2020-02-09 08:32:56 +01:00
Stanislav Motylkov
af7ec17ce1 [HALXBOX] Don't use Xbox partitions if MBR signature found (#2253)
* [HALXBOX] Formatting only.

* [HALXBOX] Don't use Xbox partitions if MBR signature found.

- Fixes BSOD 0x7B when booting from a HDD that have both MBR and BRFR signatures.
- It happens when you format Xbox (BRFR) disk as MBR.
  After that "BRFR" signature is still located at sector 3.
- Also fix pre-existing leaks.

CORE-16216 CORE-16329
2020-01-18 18:41:32 +01:00
disean
e5c0052466 [HAL][FREELDR] Fix system timer oscillator frequency on a Xbox (#2245)
See https://xboxdevwiki.net/Porting_an_Operating_System_to_the_Xbox_HOWTO#Timer_Frequency
2020-01-14 18:47:36 +01:00
Serge Gautherie
fdc787c11d [HALX86] Remove a now useless ASSERT() (#2089)
By construction now the assertion will always be verified.
Addendum to 5887b170.
2019-11-25 18:29:03 +01:00
Hermès Bélusca-Maïto
5887b17005
[HALX86] Fix the "ASSERT(j < 32);" problem in HalpStoreAndClearIopm() encountered from time to time.
CORE-11921 CORE-13715

(Regression introduced by commit 2e1b82cf, r44841.)

In some cases the number of valid (!= 0xFFFF) entries in the IOPM can be
larger than the assumed size (32) of the entries cache. The maximum
possible number of entries is equal to IOPM_SIZE / sizeof(USHORT).

A way to reproduce the problem is as follows: start ReactOS in debugging
mode using '/DEBUG /DEBUGPORT=SCREEN' . Then manage to break into the
debugger exactly during the execution of Ke386CallBios() triggered by
display initialization (for example in my case, while a video driver was
being initialized via the HwInitialize() call done by videoport inside
IntVideoPortDispatchOpen() ).

When this happens, a "concurrent" execution between Ke386CallBios() and
the HAL function HalpStoreAndClearIopm() takes place. This is due to the
fact that when entering the debugger in SCREEN mode, the following
call-chain holds:
InbvResetDisplay() -> VidResetDisplay() -> HalResetDisplay() ->
HalpBiosDisplayReset() -> HalpSetupRealModeIoPermissionsAndTask() ->
HalpStoreAndClearIopm().

However, the code of Ke386CallBios() has reset the IOPM contents with
all zeroes instead of 0xFFFF, and this triggers the caching of all the
entries of the IOPM by HalpStoreAndClearIopm(), whose number is greater
than the wrongly assumed number of '32'.

As Thomas explained to me, "Windows supports [the maximum number of IOPM entries],
it just makes a full copy of the table instead of this indexed partial copy."

And I agree that this overengineered so-called "optimization" committed
in 2e1b82cf contributed in introducing an unnecessary bug and making the
code less clear. Also it makes the IOPM cache larger than the necessary
size by twice as much. Finally, Ke386CallBios() also caches IOPM entries
before doing a 16-bit call, and obviously uses the more straightforward
way of doing a direct copy of the IOPM table (using RtlCopyMemory()).

I wonder what kind of "optimization" this tried to achieve, knowing that
we are not doing like thousands of 32->16bit BIOS interrupt calls per second
in ReactOS...
2019-11-25 00:41:55 +01:00
Hermès Bélusca-Maïto
00cb464d9d
[HALX86] Trailing whitespace fixes only. 2019-11-25 00:41:55 +01:00
Stanislav Motylkov
d4ede03e19 [HALXBOX] Implement shutdown, reboot, and power cycle routines
CORE-16216
2019-10-05 17:42:28 +02:00
Stanislav Motylkov
c360509724 [HALXBOX][CMAKE] Merge generic module with xbox module for modification 2019-10-05 17:42:28 +02:00
Hermès Bélusca-Maïto
e995147a1c
[HAL] Update the PCI hardware IDs database.
Extracted from the pci.ids database at https://pci-ids.ucw.cz/ from 2019-09-28 03:15:02 .
Maintained by Albert Pool, Martin Mares, Michal Vaner, and other volunteers from the PCI ID Project.
2019-09-28 18:52:59 +02:00
Stanislav Motylkov
07706eca3a [HAL] Fix more bugs in HalpDebugPciDumpBus (#1939)
- Don't match device id outside current vendor id list.
- Don't match subsystem id outside current device id list.
- Refactor some magic constants.

Addendum to 894635b.
2019-09-28 18:30:56 +02:00
Stanislav Motylkov
894635bb00 [HAL] Fix parser bugs in HalpDebugPciDumpBus (#1895)
- Match subclass properly, don't match third subclass.
- Don't match subclass from next class, add ClassEnd boundary.
- Use class name if subclass name not available.
- Gracefully return "Unknown" if no class name found.
2019-09-23 23:46:23 +02:00
Stanislav Motylkov
17bb6d10eb [HAL] Return correct bus handler in HaliFindBusAddressTranslation
This fixes the bug when VidInitialize asks for different translated addresses
and VgaIsPresent always returns FALSE either because the machine does not have
VGA controller at all (e.g. 86Duino Zero), or it does have video hardware
that is not compatible with VGA standard (e.g. Original Xbox).

The problem investigated by Stanislav Motylkov. Suggested fix by Thomas Faber.

CORE-14625 CORE-16216 CORE-16222

Co-authored-by: Thomas Faber <thomas.faber@reactos.org>
2019-09-01 16:37:56 +02:00
Stanislav Motylkov
b99272702c [HAL] Refactor PCI blacklisting for Xbox
- Use a separate function for detecting blacklisted PCI slots
- Blacklist PCI-to-PCI bridge to avoid stack overflow on real hardware Microsoft Xbox 1.3

CORE-16319 CORE-16216
2019-08-20 01:51:16 +02:00
Stanislav Motylkov
251bf49127 [HAL] Xbox needs more PCI blacklisting!
CORE-16216
2019-08-17 21:19:28 +02:00
Stanislav Motylkov
5d57e39655 [HAL] Add Xbox Hardware Abstraction Layer
- Create xbox.cmake based on legacy.cmake and pic.cmake
- Revive Xbox HAL files and add them to the build
- Fix boot with Xbox HAL, add missing parts from halinit_up.c
- Code style and debug logging improvements in pcibus.c
- Allow to choose Xbox HAL in usetup

CORE-16216
2019-08-16 18:28:52 +02:00
Timo Kreuzer
9ab3246d43 [HAL] Implement amd64 BIOS call support
The code uses FAST486 to emulate the BIOS code.
2019-08-15 14:13:54 +02:00
Jérôme Gardou
23373acbb9 [CMAKE] Use modules instead of shared libraries
There is no need to compile our DLLs as shared libraries since we are
managing symbols exports and imports through spec files.

On my system, this reduces the configure-time by a factor of two.
2019-04-06 17:43:38 +02:00
Extravert-ir
2b4108b2c6 [HALX86] Removed reduntant INIT_FUNCTION attribute from HalpGetSystemInterruptVector. (#1234)
This fixes livecd crashes started since 71fefa32db.
2019-01-13 01:01:31 +01:00
Timo Kreuzer
71fefa32db
[NDK][NTOS] Add global definition of INIT_FUNCTION/INIT_SECTION (#779)
* Add an NDK header to define INIT_FUNCTION/INIT_SECTION globally
* Use _declspec(allocate(x)) and _declspec(code_seg(x)) on MSVC versions that support it
* Use INIT_FUNCTION on functions only and INIT_SECTION on data only (required by MSVC)
* Place INIT_FUNCTION before the return type (required by MSVC)
* Make sure declarations and implementations share the same modifiers (required by MSVC)
* Add a global linker option to suppress warnings about defined but unused INIT section
* Merge INIT section into .text in freeldr
2018-12-30 12:19:11 +01:00
Hermès Bélusca-Maïto
94d8194376
[HAL] Update the PCI hardware IDs database.
Extracted from the pci.ids database at https://pci-ids.ucw.cz/ from 2018-11-21 03:15:02 .
Maintained by Albert Pool, Martin Mares, Michal Vaner, and other volunteers from the PCI ID Project.
2018-11-25 17:21:00 +01:00
Thomas Faber
1ed0f9ab57
[HAL] Remove misleading debug prints about USB controllers. 2018-08-08 20:08:38 +02:00
Denis Malikov
4ea570975c
[HAL] Add NT6-compatible version of HalpMapPhysicalMemory64 and HalpUnmapVirtualAddress 2018-08-05 10:14:57 +02:00
Timo Kreuzer
cf77354dce [REACTOS] Fix 64 bit issues 2018-08-04 19:19:34 +02:00
Serge Gautherie
e01f935f0e
[HALX86] Fix a Clang-Cl warning about KiUnexpectedInterrupt
"warning: cast between incompatible calling conventions 'cdecl' and 'fastcall'; calls through this pointer may abort at runtime [-Wcast-calling-convention]"

CORE-14306
2018-06-13 10:48:55 +02:00
Thomas Faber
fc9bc9390d
[HAL] Reset the stack pointer to the stack frame when calling second-entry interrupt handlers. CORE-14449
Because we can encounter pending interrupts repeatedly,
HalpEndSoftwareInterrupt and HalEndSystemInterrupt already clean up the stack
space for their arguments (done for CORE-11123/CORE-14076).
However these functions are called from C functions such as KiInterruptDispatch
and HalpDispatchInterrupt2[ndEntry]. These callers also use up stack space,
and it is unknown how much.
To fix this, we simply reset the stack pointer to the location of the trap
frame, which is where it points during a first-level dispatch. This cleans
up the stack usage of any callers higher up, and is okay because a return
will happen through the trap frame anyway.

Dedicated to Pierre.
2018-04-13 09:04:52 +02:00
Timo Kreuzer
6b1ca75899
[REACTOS] Fix 64 bit build (#465)
* [HAL] Simplify HalpReboot() and make it portable
* [NTOS:MM] Cast constant to PVOID
* [BINPATCH] Fix 64 bit build
* [VFDDRV] Fix 64 bit build and buffer overruns
* [USBOHCI] Fix structure alignment issues
* [ATL_APITEST] Fix 64 bit build
* [XDK] Update unwind structures in winnt.h
* [NTDLL_APITEST] Fix 64 bit build
* [NTDLL_WINETEST] Fix 64 bit build
* [TFTPD] Fix x64 build
* [USBPORT] Fix a C_ASSERT
* [DSOUND] Fix x64 build
* [HAL] Remove obsolete GetPteAddress() macro
2018-04-03 15:13:17 -06:00
Thomas Faber
888ace4397
[HAL] Eliminate tail calls from HalpHardwareInterruptLevel. CORE-14076 2018-02-18 13:06:44 +01:00
Thomas Faber
b4453242f7
[HAL] Eliminate tail calls from HalpDispatchInterrupt[2]. CORE-14076 2018-02-18 13:06:42 +01:00
Thomas Faber
ade345427f
[HAL] Eliminate tail calls from HalEndSystemInterrupt. CORE-14076 2018-02-18 13:06:41 +01:00
Thomas Faber
7a9474a6bb
[HAL] Create a macro for the HalpEndSoftwareInterrupt to allow reuse. CORE-14076 2018-02-18 13:06:39 +01:00
Thomas Faber
040d78354e
[HAL] Convert HalpEndSoftwareInterrupt2 to fastcall. CORE-14076 2018-02-18 13:06:37 +01:00
Ivan Labutin
5ae2750467
[HAL] Implement APIC-based profiling for x64. 2018-02-15 12:45:29 +01:00
Timo Kreuzer
5311c57b5f [HAL] Use 64 bits for physical addresses. 2017-12-17 19:01:52 +01:00
Colin Finck
361b6e39e3
[HALX86] Deduplicate initialization of legacy PICs and remove EOI in I/O APIC initialization, which causes an unexpected interrupt 2017-12-17 09:51:37 +01:00
Amine Khaldi
0bae06fa5f [HAL] Add some header guards. 2017-12-09 13:20:22 +01:00
Hermès Bélusca-Maïto
0436a4c73b Add a small descriptive comment for the reason why the chosen files are specified in a .gitattributes file. 2017-10-08 15:48:07 +02:00
Colin Finck
950c86fb4c Fix remaining text file line endings in the tree. (#18)
Based on https://stackoverflow.com/a/1511273

Also enforce CRLF for all *.xml files in our tree, because they are distributed with ReactOS.
2017-10-06 15:00:36 +02:00
Colin Finck
9ebf43567d Add .gitattributes and .gitignore files and normalize line endings in the repository (#10) 2017-10-04 20:37:32 +02:00
Colin Finck
c2c66aff7d Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00