Jump to content

Does Windows XP support native 4Kn hard disks?


Recommended Posts

Posted (edited)

According to Microsoft specifications, native 4K drives with logical sectors of 4096 bytes (not 512e) are only supported starting with Windows Eight.
However, if I'm currently working with MBR +2 TiB hard drives with USB adapters that convert the logical sector from 512e to 4096 bytes, why won't Windows XP read native 4K drives as SATA-connected data drives?
I understand that the BIOS will have to be prepared to recognize them, but otherwise, I don't understand the problem.
Although it is true that GPT drives with the Paragon driver report logical sectors as 512 bytes and physical sectors as 512 bytes, even though their physical sectors are 4096 bytes.
Official Microsoft info:
https://learn.microsoft.com/en-us/troubleshoot/windows-server/backup-and-storage/support-policy-4k-sector-hard-drives
I also have to say that in theory FAT16x was supported by Windows NT 4.0 with logical sectors up to 8192 bytes to increase its capacity up to 16 GiB

Edited by Cixert

Posted

Im using some external HDs (WD) larger than 4TB in XP x64... and works perfectly. The only drawback is that you have to wait about a minute to the computer recognize the attached HD... then the drive works perfectly

Posted (edited)

maybe it is time that someone look the published codes from microsoft for example the WRK
so we could tell why

i had left open my fault saying 4 times 512 = 4 k, but that isnt right - it is 8 times
however only cixert fixed that one up

if FAT32ex on xp can acseed that 2 TB limit and set a sector size, it might be possible 

if not its not hard to write a loop that actually parse 512 bytes 8 times 

on the other hand it would raise question to that classical saying "32 bit are limited to 4 gb"
according to this logic 32 bit cant address a HDD bigger then 4 gb
the overlappend structure just use two dwords (aka 32 bit * 2 = 64 bits) (it has to be mentioned because in windows thats the structure windows use for file offsets)

if i continue to talk like this i can only make speculations
but lets say it would be able to pass the size of a dword (32 bits)
it would not mean that it can pass the 512 sector
as we know it can make 512 sectors with 4 gb (aka 2 tb data)
but such things you can read out of the microsoft code/either disassembled/debugged or the published code
- it is certainly some work - if someone actually know what the problem is it would be faster then just gambling around

i actually wrote data to the disc on i/o level 
but that memory is far to old to get it back, it actually lack like the most part of it, i just remember a few I/O ports like 1f4 
and the writes they are either dword (32 bit) word (16 bit) byte (8 bit)
this is not a problem as you just give it a loop to write 
if you have lets say 1024 bits to write
you use for the 32 bit writes (1024/32 = downrounded 33 times)
33 * 32 = 1000
then you still have to write 24 bytes , you can either do this with 8 bit writes or one 16 bit write and one 8 bit write
24 / 16 = 1 
after that you have the last byte
8 / 8 = 1 

= 1024 bits have been written

the hardware actually transfer that code into a "next code"
this next code dont really care if it was 33 + 1 + 1 writes, it rather finds the data that wants to be progressed (cache should be a a word here)


to get this information out you need time it took 2 weeks just to compile chrome up
another 2 weeks for getting the things around that
that makes at least 4 weeks to dig into this - what time i dont have at the moment sorry

maybe thats the right spot ? it definatly has low and high parts
https://wiki.osdev.org/ATA_PIO_Mode#Registers
quote: ";ATA PI0 33bit singletasking disk read function (up to 64K sectors, using 48bit mode)"
quote2: "Note on the "magic bits" sent to port 0x1f6: Bit 6 (value = 0x40) is the LBA bit. This must be set for either LBA28 or LBA48 transfers."
quote3:
"
An example:

outb (0x1F2, bytecount/512 = sectorcount)

outb (0x1F3, Sector Number -- the S in CHS)

outb (0x1F4, Cylinder Low Byte)

outb (0x1F5, Cylinder High Byte)


"
it is written in assembly to me it seems to have 3 words (word = 16 bit) that address a 48 bit offset (aka LBA48 / 16+16+16=48 (it seems low, mid and high/LBAlo, LBAmid, and LBAhi)

the logic says it begins with a port that then counts up, it also says this port useally is 0x1F0 (if not its just that "beginning port" + X)

(+3 / 1F3) LBAlo - 8-bit / 16-bit (LBA 48 are 16 bit) 8 bit is only for LBA 28

(+4 / 1F4) LBAmid - 8-bit / 16-bit (LBA 48 are 16 bit) 8 bit is only for LBA 28

(+5 / 1F5) LBAhi - 8-bit / 16-bit  (LBA 48 are 16 bit) 8 bit is only for LBA 28

that again makes 48 bits, it is not a wire/address or 64 bit question

you tell the device that 48 bits in 3 steps ... where you want to write - therefore it dont need a 64 bit address question - together they are 48 bit´s or just LBA48

after that you just write at that spot ... there is no offset - the "offset" has been set before

---

if it is like that it isnt hard either you probaly have to set the right settings and address the 48 bits, its different from the paging mechanism (for ram) what actually has 4k pages, 4 megabyte pages, maybe segments, 64 bit PTE/PDE entrys (that can be done on a 32 bit OS, one example is that CMPXCHG8B command in 32 bit mode it can set 64 bit at once (atomic) ) another atmoic way to store 64 bit in 32 bit mode would would be to use the FPU unit the FPU unit can store 64 bits in an offset - to do so you could just put the two 32 bit values to an offset and storing those on the FPU , from the FPU you then store that value to the requied offset (aka where the PTE´s and PDE´s are at), in short talk you can use the FPU as integer if you do it rightm or even "just as memory storage for more then 32 bit" 

to make it via fpu unit FST / FSTP would be an example the opcodes (these are the ones who have a memory location, could be used) DD /2 (FST), or DD / 3 (FSTP) can write 64 bits to an offset: 

https://tizee.github.io/x86_ref_book_web/instruction/fst_fstp.html

cmpxchg8b: 

https://www.felixcloutier.com/x86/cmpxchg8b:cmpxchg8b

 

 

but jumping around from one project to a other just kills not only 1 project it kills both of projects, you guys are on the point


 

Edited by user57
Posted (edited)

Sorry, that I have not explained well.
I know Windows XP can work as data disk with hard drives with 4K physical sector and logical sector 512E (not for booting).
My question is whether Windows XP can work with hard drives with 4K physical sector and also 4KN logical sector.
The majority of hard drives that exceed the 2 TIB are 4K-512E, but some are 4K-4KN which would supposedly imply breaking the 2 Tib barrier of the Master Boot Record and also of GPT with the Windows 2003 drivers.
Does any user have a 4K-4KN hard disk?
how to recognize a hard disk before buying....
https://support-en.wd.com/app/answers/detailweb/a_id/20968/

Edited by Cixert
Posted

So we may safely assume, no support for XP was ever inttended. Look here,

https://aidanfinn.com/?p=13179

"Why Windows Server 2012 Hyper-V VHDX 4K Alignment Is So Important

The current VHD driver assumes a physical sector size of 512 bytes and issues 512-byte I/Os, which makes it incompatible with these disks. As a result, the current VHD driver cannot open VHD files on physical 4 KB sector disks. Hyper-V makes it possible to store VHDs on 4 KB disks by implementing a software RMW algorithm in the VHD layer to convert the 512-byte access and update request to the VHD file to corresponding 4 KB accesses and updates."

  • 3 weeks later...
Posted (edited)
On 4/27/2025 at 2:12 AM, Klemper said:

AI answer.

AI.png

Yes, but it's well known that Microsoft isn't entirely truthful, and the AI is 95% a liar, in my opinion.
That's why I'm asking if anyone has tested 4Kn drives in real mode. My suspicion is that they should work in XP and in MBR mode would have a 16 TiB limit, at least as data disks. In GPT mode, they would need the Paragon driver to exceed 2 TiB.

Those patches for 4K drives were made since Windows Vista; they don't exist for Windows XP, and again, my suspicion is that the patches only work to overcome the 2 TiB limit with full LBA-48. Without the patches, 2000, XP, Vista, and Seven all work correctly with 4K-512e hard disks up to 2 TiB with LBA-32 limit.

Edited by Cixert
Posted
14 hours ago, Cixert said:

Windows Vista

Windows Vista works with them without patches, sorry I don't know about XP. Your suspicion is that they should work in XP has some solid grounds. I have a 4kn drive, but I can't remove it from the plastic storage box to test it in SATA mode, sorry.

Posted (edited)

XP only has problems creating the partition in 4K format. But if you create it elsewhere it can read it fine. What I do is I partition and format the hard drive using any Windows 7 setup DVD. Then restart and install XP in that partition. It installs fine and is correctly aligned.

Edited by tekkaman

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...