mirror of
https://github.com/reactos/reactos.git
synced 2025-07-13 22:14:12 +00:00
[UNIATA]
- Update to version 0.46e3 (and fix up the version numbers) - Un-"fix" insignificant typo corrections that only serve to make syncing harder CORE-13032 #resolve CORE-11894 CORE-11277 CORE-12909 svn path=/trunk/; revision=74319
This commit is contained in:
parent
21cb633c9e
commit
3f79f9922f
6 changed files with 43 additions and 14 deletions
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
// Build Version 0.46d8
|
// Build Version 0.46e3
|
||||||
|
|
||||||
|
|
||||||
UCHAR const AtaCommands48[256] = {
|
UCHAR const AtaCommands48[256] = {
|
||||||
|
|
|
@ -712,7 +712,7 @@ typedef struct _IDENTIFY_DATA {
|
||||||
USHORT UDMASupport : 7; // 62 ATAPI
|
USHORT UDMASupport : 7; // 62 ATAPI
|
||||||
USHORT MultiWordDMASupport : 3;
|
USHORT MultiWordDMASupport : 3;
|
||||||
USHORT DMASupport : 1;
|
USHORT DMASupport : 1;
|
||||||
USHORT Reserved62_11_14 : 4;
|
USHORT Reseved62_11_14 : 4;
|
||||||
USHORT DMADirRequired : 1;
|
USHORT DMADirRequired : 1;
|
||||||
} AtapiDMA;
|
} AtapiDMA;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1896,8 +1896,9 @@ extern ULONG CPU_num;
|
||||||
#define VM_VMWARE 0x03
|
#define VM_VMWARE 0x03
|
||||||
#define VM_QEMU 0x04
|
#define VM_QEMU 0x04
|
||||||
#define VM_BOCHS 0x05
|
#define VM_BOCHS 0x05
|
||||||
|
#define VM_PCEM 0x06
|
||||||
|
|
||||||
#define VM_MAX_KNOWN VM_BOCHS
|
#define VM_MAX_KNOWN VM_PCEM
|
||||||
|
|
||||||
extern BOOLEAN WinVer_WDM_Model;
|
extern BOOLEAN WinVer_WDM_Model;
|
||||||
|
|
||||||
|
|
|
@ -1762,7 +1762,7 @@ IssueIdentify(
|
||||||
// ATI/SII chipsets with memory-mapped IO hangs when
|
// ATI/SII chipsets with memory-mapped IO hangs when
|
||||||
// I call ReadBuffer(), probably due to PCI burst/prefetch enabled
|
// I call ReadBuffer(), probably due to PCI burst/prefetch enabled
|
||||||
// Unfortunately, I don't know yet how to workaround it except
|
// Unfortunately, I don't know yet how to workaround it except
|
||||||
// specifying manual delay in the way you see below.
|
// spacifying manual delay in the way you see below.
|
||||||
ReadBuffer(chan, (PUSHORT)&deviceExtension->FullIdentifyData, 256, PIO0_TIMING);
|
ReadBuffer(chan, (PUSHORT)&deviceExtension->FullIdentifyData, 256, PIO0_TIMING);
|
||||||
|
|
||||||
// Work around for some IDE and one model Atapi that will present more than
|
// Work around for some IDE and one model Atapi that will present more than
|
||||||
|
@ -1917,6 +1917,8 @@ IssueIdentify(
|
||||||
// Check for HDDs > 8Gb
|
// Check for HDDs > 8Gb
|
||||||
if ((deviceExtension->FullIdentifyData.NumberOfCylinders == 0x3fff) &&
|
if ((deviceExtension->FullIdentifyData.NumberOfCylinders == 0x3fff) &&
|
||||||
/* (deviceExtension->FullIdentifyData.TranslationFieldsValid) &&*/
|
/* (deviceExtension->FullIdentifyData.TranslationFieldsValid) &&*/
|
||||||
|
deviceExtension->FullIdentifyData.NumberOfHeads &&
|
||||||
|
deviceExtension->FullIdentifyData.SectorsPerTrack &&
|
||||||
(NumOfSectors < deviceExtension->FullIdentifyData.UserAddressableSectors)) {
|
(NumOfSectors < deviceExtension->FullIdentifyData.UserAddressableSectors)) {
|
||||||
KdPrint2((PRINT_PREFIX "NumberOfCylinders == 0x3fff\n"));
|
KdPrint2((PRINT_PREFIX "NumberOfCylinders == 0x3fff\n"));
|
||||||
cylinders =
|
cylinders =
|
||||||
|
@ -1960,6 +1962,8 @@ IssueIdentify(
|
||||||
if(LunExt->DeviceFlags & DFLAGS_LBA_ENABLED) {
|
if(LunExt->DeviceFlags & DFLAGS_LBA_ENABLED) {
|
||||||
if(deviceExtension->FullIdentifyData.FeaturesSupport.Address48 &&
|
if(deviceExtension->FullIdentifyData.FeaturesSupport.Address48 &&
|
||||||
deviceExtension->FullIdentifyData.FeaturesEnabled.Address48 &&
|
deviceExtension->FullIdentifyData.FeaturesEnabled.Address48 &&
|
||||||
|
deviceExtension->FullIdentifyData.NumberOfHeads &&
|
||||||
|
deviceExtension->FullIdentifyData.SectorsPerTrack &&
|
||||||
(deviceExtension->FullIdentifyData.UserAddressableSectors48 > NumOfSectors)
|
(deviceExtension->FullIdentifyData.UserAddressableSectors48 > NumOfSectors)
|
||||||
) {
|
) {
|
||||||
KdPrint2((PRINT_PREFIX "LBA48\n"));
|
KdPrint2((PRINT_PREFIX "LBA48\n"));
|
||||||
|
@ -2093,8 +2097,21 @@ IssueIdentify(
|
||||||
|
|
||||||
// fill IdentifyData with bogus geometry
|
// fill IdentifyData with bogus geometry
|
||||||
KdPrint2((PRINT_PREFIX "requested LunExt->GeomType=%x\n", LunExt->opt_GeomType));
|
KdPrint2((PRINT_PREFIX "requested LunExt->GeomType=%x\n", LunExt->opt_GeomType));
|
||||||
|
if(deviceExtension->FullIdentifyData.CurrentSectorsPerTrack &&
|
||||||
|
deviceExtension->FullIdentifyData.NumberOfCurrentHeads) {
|
||||||
tmp_cylinders = NumOfSectors / (deviceExtension->FullIdentifyData.CurrentSectorsPerTrack *
|
tmp_cylinders = NumOfSectors / (deviceExtension->FullIdentifyData.CurrentSectorsPerTrack *
|
||||||
deviceExtension->FullIdentifyData.NumberOfCurrentHeads);
|
deviceExtension->FullIdentifyData.NumberOfCurrentHeads);
|
||||||
|
} else
|
||||||
|
if(deviceExtension->FullIdentifyData.SectorsPerTrack &&
|
||||||
|
deviceExtension->FullIdentifyData.NumberOfHeads) {
|
||||||
|
KdPrint2((PRINT_PREFIX "Current C/H = %#I64x/%#I64x\n",
|
||||||
|
deviceExtension->FullIdentifyData.CurrentSectorsPerTrack,
|
||||||
|
deviceExtension->FullIdentifyData.NumberOfCurrentHeads));
|
||||||
|
tmp_cylinders = NumOfSectors / (deviceExtension->FullIdentifyData.SectorsPerTrack *
|
||||||
|
deviceExtension->FullIdentifyData.NumberOfHeads);
|
||||||
|
} else {
|
||||||
|
tmp_cylinders = 0;
|
||||||
|
}
|
||||||
KdPrint2((PRINT_PREFIX "tmp_cylinders = %#I64x\n", tmp_cylinders));
|
KdPrint2((PRINT_PREFIX "tmp_cylinders = %#I64x\n", tmp_cylinders));
|
||||||
if((tmp_cylinders < 0xffff) || (LunExt->opt_GeomType == GEOM_ORIG)) {
|
if((tmp_cylinders < 0xffff) || (LunExt->opt_GeomType == GEOM_ORIG)) {
|
||||||
// ok, we can keep original values
|
// ok, we can keep original values
|
||||||
|
@ -2116,6 +2133,11 @@ IssueIdentify(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!deviceExtension->FullIdentifyData.SectorsPerTrack ||
|
||||||
|
!deviceExtension->FullIdentifyData.NumberOfHeads) {
|
||||||
|
KdPrint2((PRINT_PREFIX "Zero S/H -> Force Use GEOM_STD\n"));
|
||||||
|
}
|
||||||
|
|
||||||
if(LunExt->opt_GeomType == GEOM_STD) {
|
if(LunExt->opt_GeomType == GEOM_STD) {
|
||||||
deviceExtension->FullIdentifyData.CurrentSectorsPerTrack =
|
deviceExtension->FullIdentifyData.CurrentSectorsPerTrack =
|
||||||
deviceExtension->FullIdentifyData.SectorsPerTrack = 63;
|
deviceExtension->FullIdentifyData.SectorsPerTrack = 63;
|
||||||
|
@ -5845,6 +5867,10 @@ continue_read_drq:
|
||||||
|
|
||||||
statusByte = WaitOnBusy(chan);
|
statusByte = WaitOnBusy(chan);
|
||||||
|
|
||||||
|
if(wordCount&1 && atapiDev && (g_opt_VirtualMachine == VM_BOCHS)) {
|
||||||
|
KdPrint2((PRINT_PREFIX
|
||||||
|
"IdeIntr: unaligned ATAPI %#x Words\n", wordCount));
|
||||||
|
} else
|
||||||
if(LunExt->DeviceFlags & DFLAGS_DWORDIO_ENABLED) {
|
if(LunExt->DeviceFlags & DFLAGS_DWORDIO_ENABLED) {
|
||||||
KdPrint2((PRINT_PREFIX
|
KdPrint2((PRINT_PREFIX
|
||||||
"IdeIntr: pre-Read %#x Dwords\n", wordCount/2));
|
"IdeIntr: pre-Read %#x Dwords\n", wordCount/2));
|
||||||
|
|
|
@ -107,6 +107,8 @@ AtapiVirtToPhysAddr_(
|
||||||
PHYSICAL_ADDRESS ph_addr;
|
PHYSICAL_ADDRESS ph_addr;
|
||||||
ULONG addr;
|
ULONG addr;
|
||||||
|
|
||||||
|
*(volatile char*)data; // Touch memory, this will prevent condition of not-ready page table for valid addresses
|
||||||
|
// See ROS-11894 bug
|
||||||
ph_addr = MmGetPhysicalAddress(data);
|
ph_addr = MmGetPhysicalAddress(data);
|
||||||
KdPrint3((PRINT_PREFIX "AtapiVirtToPhysAddr_: %x -> %8.8x:%8.8x\n", data, ph_addr.HighPart, ph_addr.LowPart));
|
KdPrint3((PRINT_PREFIX "AtapiVirtToPhysAddr_: %x -> %8.8x:%8.8x\n", data, ph_addr.HighPart, ph_addr.LowPart));
|
||||||
if(!ph_addru && ph_addr.HighPart) {
|
if(!ph_addru && ph_addr.HighPart) {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#define UNIATA_VER_STR "46d8"
|
#define UNIATA_VER_STR "46e3"
|
||||||
#define UNIATA_VER_DOT 0.46.4.8
|
#define UNIATA_VER_DOT 0.46.5.3
|
||||||
#define UNIATA_VER_MJ 0
|
#define UNIATA_VER_MJ 0
|
||||||
#define UNIATA_VER_MN 46
|
#define UNIATA_VER_MN 46
|
||||||
#define UNIATA_VER_SUB_MJ 4
|
#define UNIATA_VER_SUB_MJ 5
|
||||||
#define UNIATA_VER_SUB_MN 8
|
#define UNIATA_VER_SUB_MN 3
|
||||||
#define UNIATA_VER_DOT_COMMA 0,46,4,8
|
#define UNIATA_VER_DOT_COMMA 0,46,5,3
|
||||||
#define UNIATA_VER_DOT_STR "0.46.4.8"
|
#define UNIATA_VER_DOT_STR "0.46.5.3"
|
||||||
#define UNIATA_VER_YEAR 2016
|
#define UNIATA_VER_YEAR 2017
|
||||||
#define UNIATA_VER_YEAR_STR "2016"
|
#define UNIATA_VER_YEAR_STR "2017"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue