qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Bug 1896342] [NEW] IDE ATA IDENTIFY WORD 106
@ 2020-09-19 19:01 Benjamin David Lunt
  2020-09-19 19:38 ` [Bug 1896342] " Benjamin David Lunt
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Benjamin David Lunt @ 2020-09-19 19:01 UTC (permalink / raw)
  To: qemu-devel

Public bug reported:

The code at line 202 in hw/ide/core.c
 (https://git.qemu.org/?p=qemu.git;a=blob;f=hw/ide/core.c;#l201)
hard codes bit 13 set.  However, get_physical_block_exp() can and may return 0, which is a valid response. If get_physical_block_exp() does return zero, bit 13 should not be set.

ATAPI8 states (Section 7.17.7.73):
 "Bit 13 of word 106 shall be set to one to indicate that the device has more than one logical sector per physical sector"

and gives the examples:
  Bits (3:0): 0 = 2^0 = 1 logical sector per physical sector
  Bits (3:0): 1 = 2^1 = 2 logical sector per physical sector
  Bits (3:0): 2 = 2^2 = 4 logical sector per physical sector
  Bits (3:0): 3 = 2^3 = 8 logical sector per physical sector

Therefore, if bit 13 is set, bits 3:0 must be greater than zero.

If get_physical_block_exp() returns zero then there is a 1:1 ratio and
bit 13 must be 0.

Just my opinion.

Thanks,
Ben

** Affects: qemu
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1896342

Title:
  IDE ATA IDENTIFY WORD 106

Status in QEMU:
  New

Bug description:
  The code at line 202 in hw/ide/core.c
   (https://git.qemu.org/?p=qemu.git;a=blob;f=hw/ide/core.c;#l201)
  hard codes bit 13 set.  However, get_physical_block_exp() can and may return 0, which is a valid response. If get_physical_block_exp() does return zero, bit 13 should not be set.

  ATAPI8 states (Section 7.17.7.73):
   "Bit 13 of word 106 shall be set to one to indicate that the device has more than one logical sector per physical sector"

  and gives the examples:
    Bits (3:0): 0 = 2^0 = 1 logical sector per physical sector
    Bits (3:0): 1 = 2^1 = 2 logical sector per physical sector
    Bits (3:0): 2 = 2^2 = 4 logical sector per physical sector
    Bits (3:0): 3 = 2^3 = 8 logical sector per physical sector

  Therefore, if bit 13 is set, bits 3:0 must be greater than zero.

  If get_physical_block_exp() returns zero then there is a 1:1 ratio and
  bit 13 must be 0.

  Just my opinion.

  Thanks,
  Ben

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1896342/+subscriptions


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-07-09  4:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-19 19:01 [Bug 1896342] [NEW] IDE ATA IDENTIFY WORD 106 Benjamin David Lunt
2020-09-19 19:38 ` [Bug 1896342] " Benjamin David Lunt
2020-10-02 19:54 ` John Snow
2021-05-09 13:59 ` Thomas Huth
2021-07-09  4:17 ` Launchpad Bug Tracker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).