* [PATCH for-8.2] ide/via: Fix BAR4 value in legacy mode
@ 2023-11-25 14:01 BALATON Zoltan
2023-11-27 18:27 ` Kevin Wolf
0 siblings, 1 reply; 2+ messages in thread
From: BALATON Zoltan @ 2023-11-25 14:01 UTC (permalink / raw)
To: qemu-devel, qemu-block; +Cc: John Snow, Kevin Wolf, philmd, Mark Cave-Ayland
Return default value in legacy mode for BAR4 when unset. This can't be
set in reset method because BARs are cleared on reset so we return it
instead when BARs are read in legacy mode.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
---
This fixes UDMA on amigaone with AmigaOS and I'd like to include for
8.2 release.
hw/ide/via.c | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/hw/ide/via.c b/hw/ide/via.c
index 2d3124ebd7..3f3c484253 100644
--- a/hw/ide/via.c
+++ b/hw/ide/via.c
@@ -163,14 +163,19 @@ static uint32_t via_ide_cfg_read(PCIDevice *pd, uint32_t addr, int len)
uint32_t val = pci_default_read_config(pd, addr, len);
uint8_t mode = pd->config[PCI_CLASS_PROG];
- if ((mode & 0xf) == 0xa && ranges_overlap(addr, len,
- PCI_BASE_ADDRESS_0, 16)) {
- /* BARs always read back zero in legacy mode */
- for (int i = addr; i < addr + len; i++) {
- if (i >= PCI_BASE_ADDRESS_0 && i < PCI_BASE_ADDRESS_0 + 16) {
- val &= ~(0xffULL << ((i - addr) << 3));
+ if ((mode & 0xf) == 0xa) {
+ if (ranges_overlap(addr, len, PCI_BASE_ADDRESS_0, 16)) {
+ /* BARs 0-3 always read back zero in legacy mode */
+ for (int i = addr; i < addr + len; i++) {
+ if (i >= PCI_BASE_ADDRESS_0 && i < PCI_BASE_ADDRESS_0 + 16) {
+ val &= ~(0xffULL << ((i - addr) << 3));
+ }
}
}
+ if (addr == PCI_BASE_ADDRESS_4 && val == PCI_BASE_ADDRESS_SPACE_IO) {
+ /* BAR4 default value if unset */
+ val = 0xcc00 | PCI_BASE_ADDRESS_SPACE_IO;
+ }
}
return val;
--
2.30.9
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH for-8.2] ide/via: Fix BAR4 value in legacy mode
2023-11-25 14:01 [PATCH for-8.2] ide/via: Fix BAR4 value in legacy mode BALATON Zoltan
@ 2023-11-27 18:27 ` Kevin Wolf
0 siblings, 0 replies; 2+ messages in thread
From: Kevin Wolf @ 2023-11-27 18:27 UTC (permalink / raw)
To: BALATON Zoltan
Cc: qemu-devel, qemu-block, John Snow, philmd, Mark Cave-Ayland
Am 25.11.2023 um 15:01 hat BALATON Zoltan geschrieben:
> Return default value in legacy mode for BAR4 when unset. This can't be
> set in reset method because BARs are cleared on reset so we return it
> instead when BARs are read in legacy mode.
>
> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> ---
> This fixes UDMA on amigaone with AmigaOS and I'd like to include for
> 8.2 release.
Thanks, applied to the block branch.
Kevin
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-11-27 18:28 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-25 14:01 [PATCH for-8.2] ide/via: Fix BAR4 value in legacy mode BALATON Zoltan
2023-11-27 18:27 ` Kevin Wolf
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).