From 647ff911e8b66f44166292bb092621b07be10740 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Tue, 12 Apr 2011 14:52:54 -0300 Subject: [RHEL6 qemu-kvm PATCH 2/7] ide/atapi: add support for GET EVENT STATUS NOTIFICATION RH-Author: Markus Armbruster Message-id: <1302619979-22401-2-git-send-email-armbru@pond.sub.org> Patchwork-id: 21975 O-Subject: [PATCH RHEL6.1 qemu-kvm v2 1/6] ide/atapi: add support for GET EVENT STATUS NOTIFICATION Bugzilla: 558256 RH-Acked-by: Juan Quintela RH-Acked-by: Amit Shah RH-Acked-by: Jes Sorensen From: Aurelien Jarno The GET EVENT STATUS NOTIFICATION is a mandatory command according to MMC-3, even if event status notification is not supported. This patch adds support for this command. It returns NEA ("No Event Available") with an empty "Supported Event Classes" to show that it doesn't event support status notification. If asychronous operation is requested, which requires NCQ support, it returns an error according to the specifications. This fixes HAL support on FreeBSD and derivatives, which fill up the logs every second with: acd0: FAILURE - unknown CMD (0x03) ILLEGAL REQUEST asc=0x20 ascq=0x00 Signed-off-by: Aurelien Jarno Signed-off-by: Kevin Wolf (cherry picked from commit 253cb7b9909806b83d73269afb9cf0ab3fa2ce2c) Signed-off-by: Markus Armbruster --- hw/ide/core.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) Signed-off-by: Eduardo Habkost --- hw/ide/core.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/hw/ide/core.c b/hw/ide/core.c index 40abff3..b3cb7d9 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -1709,6 +1709,21 @@ static void ide_atapi_cmd(IDEState *s) ide_atapi_cmd_reply(s, len, max_len); break; } + case GPCMD_GET_EVENT_STATUS_NOTIFICATION: + max_len = ube16_to_cpu(packet + 7); + + if (packet[1] & 0x01) { /* polling */ + /* We don't support any event class (yet). */ + cpu_to_ube16(buf, 0x00); /* No event descriptor returned */ + buf[2] = 0x80; /* No Event Available (NEA) */ + buf[3] = 0x00; /* Empty supported event classes */ + ide_atapi_cmd_reply(s, 4, max_len); + } else { /* asynchronous mode */ + /* Only polling is supported, asynchronous mode is not. */ + ide_atapi_cmd_error(s, SENSE_ILLEGAL_REQUEST, + ASC_INV_FIELD_IN_CMD_PACKET); + } + break; default: ide_atapi_cmd_error(s, SENSE_ILLEGAL_REQUEST, ASC_ILLEGAL_OPCODE); -- 1.7.3.2