diff --git a/patches/explorer-Video_Registry_Key/0001-explorer-Create-CurrentControlSet-Control-Video-regi.patch b/patches/explorer-Video_Registry_Key/0001-explorer-Create-CurrentControlSet-Control-Video-regi.patch index 8ce43631..ea3c5c9b 100644 --- a/patches/explorer-Video_Registry_Key/0001-explorer-Create-CurrentControlSet-Control-Video-regi.patch +++ b/patches/explorer-Video_Registry_Key/0001-explorer-Create-CurrentControlSet-Control-Video-regi.patch @@ -1,8 +1,8 @@ -From ac9e5c8733b503db651b358c78aef60294a70aff Mon Sep 17 00:00:00 2001 +From b332f5a5dd03b7d71515a2fddefa787da3fb7b5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 9 Jan 2016 16:57:49 +0100 -Subject: explorer: Create CurrentControlSet\Control\Video registry key as - non-volatile. +Subject: [PATCH] explorer: Create CurrentControlSet\Control\Video registry key + as non-volatile. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @@ -14,10 +14,10 @@ Signed-off-by: Michael Müller 2 files changed, 16 insertions(+) diff --git a/dlls/advapi32/tests/registry.c b/dlls/advapi32/tests/registry.c -index d1fe3f05f..011c2fcea 100644 +index dfadd13ea8c..b3e5888da92 100644 --- a/dlls/advapi32/tests/registry.c +++ b/dlls/advapi32/tests/registry.c -@@ -1345,6 +1345,13 @@ static void test_reg_create_key(void) +@@ -1318,6 +1318,13 @@ static void test_reg_create_key(void) RegDeleteKeyA(hkey1, ""); RegCloseKey(hkey1); @@ -32,10 +32,10 @@ index d1fe3f05f..011c2fcea 100644 hkey1 = NULL; ret = RegCreateKeyExA(HKEY_LOCAL_MACHINE, "Software", 0, NULL, 0, KEY_READ|KEY_WOW64_32KEY, NULL, &hkey1, NULL); diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c -index 2857fcfca..bfe3bec18 100644 +index 94d178880a8..95f06e50b7d 100644 --- a/programs/explorer/desktop.c +++ b/programs/explorer/desktop.c -@@ -754,6 +754,11 @@ static BOOL get_default_enable_shell( const WCHAR *name ) +@@ -792,6 +792,11 @@ static BOOL get_default_enable_shell( const WCHAR *name ) static HMODULE load_graphics_driver( const WCHAR *driver, const GUID *guid ) { @@ -47,9 +47,9 @@ index 2857fcfca..bfe3bec18 100644 static const WCHAR device_keyW[] = { 'S','y','s','t','e','m','\\', 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\', -@@ -817,6 +822,10 @@ static HMODULE load_graphics_driver( const WCHAR *driver, const GUID *guid ) - TRACE( "display %s driver %s\n", debugstr_guid(guid), debugstr_w(buffer) ); - } +@@ -859,6 +864,10 @@ static HMODULE load_graphics_driver( const WCHAR *driver, const GUID *guid ) + + TRACE( "display %s driver %s\n", debugstr_guid(guid), debugstr_w(libname) ); + /* create video key first without REG_OPTION_VOLATILE attribute */ + if (!RegCreateKeyExW( HKEY_LOCAL_MACHINE, video_keyW, 0, NULL, 0, KEY_SET_VALUE, NULL, &hkey, NULL )) @@ -59,5 +59,5 @@ index 2857fcfca..bfe3bec18 100644 guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7] ); -- -2.21.0 +2.30.2 diff --git a/patches/ntdll-x86_64_SegDs/0001-ntdll-Report-SegDs-to-be-identical-to-SegSs-on-x86_6.patch b/patches/ntdll-x86_64_SegDs/0001-ntdll-Report-SegDs-to-be-identical-to-SegSs-on-x86_6.patch deleted file mode 100644 index d07ca424..00000000 --- a/patches/ntdll-x86_64_SegDs/0001-ntdll-Report-SegDs-to-be-identical-to-SegSs-on-x86_6.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 6fb2e6ef08a7cf1339b39fa753b29092fa76c3df Mon Sep 17 00:00:00 2001 -From: Zebediah Figura -Date: Thu, 21 Nov 2019 10:44:42 -0600 -Subject: [PATCH] ntdll: Report SegDs to be identical to SegSs on x86_64. - -Based on a patch by David Torok. - -Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47970 -Signed-off-by: Zebediah Figura ---- - dlls/ntdll/unix/signal_x86_64.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c -index d4a6e821a4c..ebbef9d2fcd 100644 ---- a/dlls/ntdll/unix/signal_x86_64.c -+++ b/dlls/ntdll/unix/signal_x86_64.c -@@ -348,11 +348,6 @@ static void save_context( CONTEXT *context, const ucontext_t *sigcontext ) - context->SegFs = FS_sig(sigcontext); - context->SegGs = GS_sig(sigcontext); - context->EFlags = EFL_sig(sigcontext); --#ifdef DS_sig -- context->SegDs = DS_sig(sigcontext); --#else -- __asm__("movw %%ds,%0" : "=m" (context->SegDs)); --#endif - #ifdef ES_sig - context->SegEs = ES_sig(sigcontext); - #else -@@ -363,6 +358,12 @@ static void save_context( CONTEXT *context, const ucontext_t *sigcontext ) - #else - __asm__("movw %%ss,%0" : "=m" (context->SegSs)); - #endif -+ /* Legends of Runeterra depends on having SegDs == SegSs in an exception -+ * handler. Testing shows that Windows returns fixed values from -+ * RtlCaptureContext() and NtGetContextThread() for at least %ds and %es, -+ * regardless of their actual values, and never sets them in -+ * NtSetContextThread(). */ -+ context->SegDs = context->SegSs; - context->Dr0 = amd64_thread_data()->dr0; - context->Dr1 = amd64_thread_data()->dr1; - context->Dr2 = amd64_thread_data()->dr2; --- -2.26.2 - diff --git a/patches/ntdll-x86_64_SegDs/definition b/patches/ntdll-x86_64_SegDs/definition deleted file mode 100644 index aa6491a7..00000000 --- a/patches/ntdll-x86_64_SegDs/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [47970] Legends of Runeterra crashes at launch diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 828ca35b..1c89de26 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -51,7 +51,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "71d41b37a1917cdf20cdb171dc73c20dbfdaeefa" + echo "6ca1a92684fcbaa1c569b60411a8036b6d11dc99" } # Show version information @@ -180,7 +180,6 @@ patch_enable_all () enable_ntdll_Zero_mod_name="$1" enable_ntdll_aarch_TEB="$1" enable_ntdll_ext4_case_folder="$1" - enable_ntdll_x86_64_SegDs="$1" enable_ntoskrnl_Stubs="$1" enable_nvapi_Stub_DLL="$1" enable_nvcuda_CUDA_Support="$1" @@ -603,9 +602,6 @@ patch_enable () ntdll-ext4-case-folder) enable_ntdll_ext4_case_folder="$2" ;; - ntdll-x86_64_SegDs) - enable_ntdll_x86_64_SegDs="$2" - ;; ntoskrnl-Stubs) enable_ntoskrnl_Stubs="$2" ;; @@ -3164,18 +3160,6 @@ if test "$enable_ntdll_ext4_case_folder" -eq 1; then patch_apply ntdll-ext4-case-folder/0002-ntdll-server-Mark-drive_c-as-case-insensitive-when-c.patch fi -# Patchset ntdll-x86_64_SegDs -# | -# | This patchset fixes the following Wine bugs: -# | * [#47970] Legends of Runeterra crashes at launch -# | -# | Modified files: -# | * dlls/ntdll/unix/signal_x86_64.c -# | -if test "$enable_ntdll_x86_64_SegDs" -eq 1; then - patch_apply ntdll-x86_64_SegDs/0001-ntdll-Report-SegDs-to-be-identical-to-SegSs-on-x86_6.patch -fi - # Patchset nvcuvid-CUDA_Video_Support # | # | This patchset has the following (direct or indirect) dependencies: diff --git a/patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch b/patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch index 8223f94f..28d65b1b 100644 --- a/patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch +++ b/patches/winedevice-Default_Drivers/0004-programs-winedevice-Load-some-common-drivers-and-fix.patch @@ -1,4 +1,4 @@ -From b230ad8676c16e2c02b6c317b0c050494225c696 Mon Sep 17 00:00:00 2001 +From e4dea5ee77c25ec502104dca8c503d5016e1a1d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Thu, 8 Jun 2017 23:50:03 +0200 Subject: [PATCH] programs/winedevice: Load some common drivers and fix ldr @@ -10,10 +10,10 @@ Subject: [PATCH] programs/winedevice: Load some common drivers and fix ldr 2 files changed, 76 insertions(+) diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c -index 0671a56efc7..85327c6f4b3 100644 +index d9d712418ee..808f304b258 100644 --- a/dlls/ntoskrnl.exe/tests/driver.c +++ b/dlls/ntoskrnl.exe/tests/driver.c -@@ -46,6 +46,7 @@ static const WCHAR driver_link[] = {'\\','D','o','s','D','e','v','i','c','e','s' +@@ -52,6 +52,7 @@ static int kmemcmp( const void *ptr1, const void *ptr2, size_t n ) static DRIVER_OBJECT *driver_obj; static DEVICE_OBJECT *lower_device, *upper_device; @@ -21,7 +21,7 @@ index 0671a56efc7..85327c6f4b3 100644 static POBJECT_TYPE *pExEventObjectType, *pIoFileObjectType, *pPsThreadType, *pIoDriverObjectType; static PEPROCESS *pPsInitialSystemProcess; -@@ -1545,6 +1546,7 @@ static void test_resource(void) +@@ -1592,6 +1593,7 @@ static void test_resource(void) ok(status == STATUS_SUCCESS, "got status %#x\n", status); } @@ -29,7 +29,7 @@ index 0671a56efc7..85327c6f4b3 100644 static void test_lookup_thread(void) { NTSTATUS status; -@@ -2072,6 +2074,52 @@ static void test_permanence(void) +@@ -2119,6 +2121,52 @@ static void test_permanence(void) ok(status == STATUS_OBJECT_NAME_NOT_FOUND, "got %#x\n", status); } @@ -82,7 +82,7 @@ index 0671a56efc7..85327c6f4b3 100644 static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack) { ULONG length = stack->Parameters.DeviceIoControl.OutputBufferLength; -@@ -2118,6 +2166,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st +@@ -2165,6 +2213,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st test_stack_callout(); test_lookaside_list(); test_ob_reference(test_input->path); @@ -90,7 +90,7 @@ index 0671a56efc7..85327c6f4b3 100644 test_resource(); test_lookup_thread(); test_IoAttachDeviceToDeviceStack(); -@@ -2392,6 +2441,7 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry) +@@ -2560,6 +2609,7 @@ NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry) DbgPrint("loading driver\n"); driver_obj = driver; @@ -99,10 +99,10 @@ index 0671a56efc7..85327c6f4b3 100644 /* Allow unloading of the driver */ driver->DriverUnload = driver_Unload; diff --git a/programs/winedevice/device.c b/programs/winedevice/device.c -index 0755caaafb0..6595788053e 100644 +index 3acc5e8a799..f16f6204efe 100644 --- a/programs/winedevice/device.c +++ b/programs/winedevice/device.c -@@ -120,7 +120,33 @@ static DWORD WINAPI service_handler( DWORD ctrl, DWORD event_type, LPVOID event_ +@@ -115,8 +115,16 @@ static DWORD WINAPI service_handler( DWORD ctrl, DWORD event_type, LPVOID event_ static void WINAPI ServiceMain( DWORD argc, LPWSTR *argv ) { @@ -111,11 +111,18 @@ index 0755caaafb0..6595788053e 100644 + static const WCHAR dxgkrnlW[] = {'d','x','g','k','r','n','l','.','s','y','s',0}; + static const WCHAR dxgmms1W[] = {'d','x','g','m','m','s','1','.','s','y','s',0}; + static const WCHAR *stubs[] = { win32kW, dxgkrnlW, dxgmms1W }; + WCHAR driver_dir[MAX_PATH]; const WCHAR *service_group = (argc >= 2) ? argv[1] : argv[0]; + LDR_DATA_TABLE_ENTRY *ldr; + ULONG_PTR magic; + int i; -+ + + if (!(stop_event = CreateEventW( NULL, TRUE, FALSE, NULL ))) + return; +@@ -129,6 +137,24 @@ static void WINAPI ServiceMain( DWORD argc, LPWSTR *argv ) + wcscat( driver_dir, L"\\drivers" ); + AddDllDirectory( driver_dir ); + + /* Load some default drivers (required by anticheat drivers) */ + for (i = 0; i < sizeof(stubs)/sizeof(stubs[0]); i++) + { @@ -133,9 +140,10 @@ index 0755caaafb0..6595788053e 100644 + InsertHeadList( &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList, &ldr->InMemoryOrderLinks ); + } + LdrUnlockLoaderLock( 0, magic ); - - if (!(stop_event = CreateEventW( NULL, TRUE, FALSE, NULL ))) - return; ++ + TRACE( "starting service group %s\n", wine_dbgstr_w(service_group) ); + set_service_status( service_handle, SERVICE_RUNNING, + SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN ); -- -2.27.0 +2.30.2 diff --git a/staging/upstream-commit b/staging/upstream-commit index 0f09b6e6..6fbd16af 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -71d41b37a1917cdf20cdb171dc73c20dbfdaeefa +6ca1a92684fcbaa1c569b60411a8036b6d11dc99