Commit bd0d90b21d84c7ac3eb258fbf93bec1cbf277986

Authored by bellard
1 parent 1a0636f8

make Knoppix CD-ROM probe happy


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@448 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 26 additions and 0 deletions
hw/ide.c
@@ -371,6 +371,17 @@ static void padstr(char *str, const char *src, int len) @@ -371,6 +371,17 @@ static void padstr(char *str, const char *src, int len)
371 } 371 }
372 } 372 }
373 373
  374 +static void padstr8(uint8_t *buf, int buf_size, const char *src)
  375 +{
  376 + int i;
  377 + for(i = 0; i < buf_size; i++) {
  378 + if (*src)
  379 + buf[i] = *src++;
  380 + else
  381 + buf[i] = ' ';
  382 + }
  383 +}
  384 +
374 static void ide_identify(IDEState *s) 385 static void ide_identify(IDEState *s)
375 { 386 {
376 uint16_t *p; 387 uint16_t *p;
@@ -1013,6 +1024,21 @@ static void ide_atapi_cmd(IDEState *s) @@ -1013,6 +1024,21 @@ static void ide_atapi_cmd(IDEState *s)
1013 cpu_to_ube32(buf + 4, 2048); 1024 cpu_to_ube32(buf + 4, 2048);
1014 ide_atapi_cmd_reply(s, 8, 8); 1025 ide_atapi_cmd_reply(s, 8, 8);
1015 break; 1026 break;
  1027 + case GPCMD_INQUIRY:
  1028 + max_len = packet[4];
  1029 + buf[0] = 0x05; /* CD-ROM */
  1030 + buf[1] = 0x80; /* removable */
  1031 + buf[2] = 0x00; /* ISO */
  1032 + buf[3] = 0x21; /* ATAPI-2 (XXX: put ATAPI-4 ?) */
  1033 + buf[4] = 31; /* additionnal length */
  1034 + buf[5] = 0; /* reserved */
  1035 + buf[6] = 0; /* reserved */
  1036 + buf[7] = 0; /* reserved */
  1037 + padstr8(buf + 8, 8, "QEMU");
  1038 + padstr8(buf + 16, 16, "QEMU CD-ROM");
  1039 + padstr8(buf + 32, 4, QEMU_VERSION);
  1040 + ide_atapi_cmd_reply(s, 36, max_len);
  1041 + break;
1016 default: 1042 default:
1017 error_cmd: 1043 error_cmd:
1018 ide_atapi_cmd_error(s, SENSE_ILLEGAL_REQUEST, 1044 ide_atapi_cmd_error(s, SENSE_ILLEGAL_REQUEST,