diff mbox

hw/q35: fix floppy controller definition in ich9

Message ID 1433167752-5311-1-git-send-email-marcel@redhat.com
State New
Headers show

Commit Message

Marcel Apfelbaum June 1, 2015, 2:09 p.m. UTC
In DSDT FDC0 declares the IO region as IO(Decode16, 0x03F2, 0x03F2, 0x00, 0x04).
Use the same in lpc_ich9 initialization code.
Now the floppy drive is detected correctly on Windows.

Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
---
 hw/isa/lpc_ich9.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Marcel Apfelbaum June 1, 2015, 2:13 p.m. UTC | #1
On 06/01/2015 05:09 PM, Marcel Apfelbaum wrote:
> In DSDT FDC0 declares the IO region as IO(Decode16, 0x03F2, 0x03F2, 0x00, 0x04).
> Use the same in lpc_ich9 initialization code.
> Now the floppy drive is detected correctly on Windows.
>
> Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
> ---
>   hw/isa/lpc_ich9.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
> index dba7585..bc9afc6 100644
> --- a/hw/isa/lpc_ich9.c
> +++ b/hw/isa/lpc_ich9.c
> @@ -494,7 +494,7 @@ static void ich9_lpc_machine_ready(Notifier *n, void *opaque)
>           /* lpt */
>           pci_conf[0x82] |= 0x04;
>       }
> -    if (memory_region_present(io_as, 0x3f0)) {
> +    if (memory_region_present(io_as, 0x3f2)) {
>           /* floppy */
>           pci_conf[0x82] |= 0x08;
>       }
>

Hi,

I cc-ed the developers involved in the mail thread:
     https://lists.gnu.org/archive/html/qemu-block/2015-05/msg01043.html
and the FDC maintainer. I hope I didn't miss anybody.

I also have no knowledge of FDC, but I think the above patch is correct
and solves the problem of floppy disk missing in Windows for Q35 machines.

Comments appreciated as always.

Thanks,
Marcel
Paolo Bonzini June 1, 2015, 2:45 p.m. UTC | #2
On 01/06/2015 16:13, Marcel Apfelbaum wrote:
> 
>> In DSDT FDC0 declares the IO region as IO(Decode16, 0x03F2, 0x03F2,
>> 0x00, 0x04).
>> Use the same in lpc_ich9 initialization code.
>> Now the floppy drive is detected correctly on Windows.
>>
>> Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
>> ---
>>   hw/isa/lpc_ich9.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
>> index dba7585..bc9afc6 100644
>> --- a/hw/isa/lpc_ich9.c
>> +++ b/hw/isa/lpc_ich9.c
>> @@ -494,7 +494,7 @@ static void ich9_lpc_machine_ready(Notifier *n,
>> void *opaque)
>>           /* lpt */
>>           pci_conf[0x82] |= 0x04;
>>       }
>> -    if (memory_region_present(io_as, 0x3f0)) {
>> +    if (memory_region_present(io_as, 0x3f2)) {
>>           /* floppy */
>>           pci_conf[0x82] |= 0x08;
>>       }
>>
> 
> Hi,
> 
> I cc-ed the developers involved in the mail thread:
>     https://lists.gnu.org/archive/html/qemu-block/2015-05/msg01043.html
> and the FDC maintainer. I hope I didn't miss anybody.
> 
> I also have no knowledge of FDC, but I think the above patch is correct
> and solves the problem of floppy disk missing in Windows for Q35 machines.

The patch is okay, but the correct definition of the area is from 0x3F1
to 0x3F7.

Paolo
Marcel Apfelbaum June 1, 2015, 2:54 p.m. UTC | #3
On 06/01/2015 05:45 PM, Paolo Bonzini wrote:
>
>
> On 01/06/2015 16:13, Marcel Apfelbaum wrote:
>>
>>> In DSDT FDC0 declares the IO region as IO(Decode16, 0x03F2, 0x03F2,
>>> 0x00, 0x04).
>>> Use the same in lpc_ich9 initialization code.
>>> Now the floppy drive is detected correctly on Windows.
>>>
>>> Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
>>> ---
>>>    hw/isa/lpc_ich9.c | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
>>> index dba7585..bc9afc6 100644
>>> --- a/hw/isa/lpc_ich9.c
>>> +++ b/hw/isa/lpc_ich9.c
>>> @@ -494,7 +494,7 @@ static void ich9_lpc_machine_ready(Notifier *n,
>>> void *opaque)
>>>            /* lpt */
>>>            pci_conf[0x82] |= 0x04;
>>>        }
>>> -    if (memory_region_present(io_as, 0x3f0)) {
>>> +    if (memory_region_present(io_as, 0x3f2)) {
>>>            /* floppy */
>>>            pci_conf[0x82] |= 0x08;
>>>        }
>>>
>>
>> Hi,
>>
>> I cc-ed the developers involved in the mail thread:
>>      https://lists.gnu.org/archive/html/qemu-block/2015-05/msg01043.html
>> and the FDC maintainer. I hope I didn't miss anybody.
>>
>> I also have no knowledge of FDC, but I think the above patch is correct
>> and solves the problem of floppy disk missing in Windows for Q35 machines.
>
> The patch is okay, but the correct definition of the area is from 0x3F1
> to 0x3F7.
Can we do other fixes on top of this? This patch solves the actual Windows problem
and now we can use floppies for Q35.

Can I take this okay as a "Reviewed-by"? )
Thanks,
Marcel


>
> Paolo
>
Paolo Bonzini June 1, 2015, 2:57 p.m. UTC | #4
> On 06/01/2015 05:45 PM, Paolo Bonzini wrote:
> > The patch is okay, but the correct definition of the area is from 0x3F1
> > to 0x3F7.
> Can we do other fixes on top of this? This patch solves the actual Windows
> problem and now we can use floppies for Q35.

Well, IANAM. :)

> Can I take this okay as a "Reviewed-by"? )

Sure.

Paolo
Marcel Apfelbaum June 1, 2015, 3:06 p.m. UTC | #5
On 06/01/2015 05:57 PM, Paolo Bonzini wrote:
>> On 06/01/2015 05:45 PM, Paolo Bonzini wrote:
>>> The patch is okay, but the correct definition of the area is from 0x3F1
>>> to 0x3F7.
>> Can we do other fixes on top of this? This patch solves the actual Windows
>> problem and now we can use floppies for Q35.
>
> Well, IANAM. :)
>
>> Can I take this okay as a "Reviewed-by"? )
>
> Sure.
Thanks Paolo!

Michael, maybe you can take this patch under pci/Q35 branch?
Thanks,
Marcel

>
> Paolo
>
diff mbox

Patch

diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
index dba7585..bc9afc6 100644
--- a/hw/isa/lpc_ich9.c
+++ b/hw/isa/lpc_ich9.c
@@ -494,7 +494,7 @@  static void ich9_lpc_machine_ready(Notifier *n, void *opaque)
         /* lpt */
         pci_conf[0x82] |= 0x04;
     }
-    if (memory_region_present(io_as, 0x3f0)) {
+    if (memory_region_present(io_as, 0x3f2)) {
         /* floppy */
         pci_conf[0x82] |= 0x08;
     }