ide-disk: workaround for buggy HPA support on ST340823A (take 3)
commitb0244a00451c1ad64bf0a51f50679f7146786780
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Mon, 20 Aug 2007 20:42:57 +0000 (20 22:42 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Mon, 20 Aug 2007 20:42:57 +0000 (20 22:42 +0200)
tree14f7725795ba27712a6d76820dde336ad6a17ef8
parent76e1faa7cfd464fa06a9c2cafd633d643daafeae
ide-disk: workaround for buggy HPA support on ST340823A (take 3)

This disk reports total number of sectors instead of maximum sector address
in response to READ_NATIVE_MAX_ADDRESS command and also happily accepts
SET_MAX_ADDRESS command with the bogus value.  This results in +1 sector
capacity being used and errors on attempts to use the last sector.

...
hdd: Host Protected Area detected.
  Â  Â  Â  current capacity is 78165360 sectors (40020 MB)
  Â  Â  Â  native Â capacity is 78165361 sectors (40020 MB)
hdd: Host Protected Area disabled.
...
hdd: reading: block=78165360, sectors=1, buffer=0xc1e63000
hdd: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hdd: dma_intr: error=0x10 { SectorIdNotFound }, LBAsect=78165360, sector=78165360
...

Add hpa_list[] table and workaround the issue in idedisk_check_hpa().

v2:
* Add missing export and improve patch description a bit.

v3:
* Add list termination.  (From Mikko)

Fixes kernel bugzilla bug #8816.

Thanks to Mikko for investigating the issue and helping with this patch.

Cc: Mikko Rapeli <mikko.rapeli@iki.fi>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-disk.c
drivers/ide/ide-iops.c