[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] hw/acpi: Set memory regions to native endian as a work aroun
From: |
Michael S. Tsirkin |
Subject: |
Re: [PATCH] hw/acpi: Set memory regions to native endian as a work around |
Date: |
Thu, 16 Dec 2021 05:27:49 -0500 |
ping
On Mon, Nov 08, 2021 at 08:33:01AM -0500, Michael S. Tsirkin wrote:
> On Mon, Nov 08, 2021 at 02:05:42PM +0100, BALATON Zoltan wrote:
> > When using ACPI on big endian machine (such as ppc/pegasos2 which has
> > a VT8231 south bridge with ACPI) writes to ACPI registers come out
> > byte swapped. This may be caused by a bug in memory subsystem but
> > until that is fixed setting the ACPI memory regions to native endian
> > makes it usable for big endian machines. This fixes ACPI shutdown with
> > pegasos2 when using the board firmware for now.
> > This could be reverted when the memory layer is fixed.
> >
> > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>
>
> Paolo, could you weight in on whether we can fix it properly
> in the memory core? I suspect it's not a good idea to switch
> to native without adding a bunch of byteswaps all
> over the place ...
>
> > ---
> > hw/acpi/core.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/hw/acpi/core.c b/hw/acpi/core.c
> > index 1e004d0078..543e4a7875 100644
> > --- a/hw/acpi/core.c
> > +++ b/hw/acpi/core.c
> > @@ -461,7 +461,7 @@ static const MemoryRegionOps acpi_pm_evt_ops = {
> > .impl.min_access_size = 2,
> > .valid.min_access_size = 1,
> > .valid.max_access_size = 2,
> > - .endianness = DEVICE_LITTLE_ENDIAN,
> > + .endianness = DEVICE_NATIVE_ENDIAN,
> > };
> >
> > void acpi_pm1_evt_init(ACPIREGS *ar, acpi_update_sci_fn update_sci,
> > @@ -531,7 +531,7 @@ static const MemoryRegionOps acpi_pm_tmr_ops = {
> > .impl.min_access_size = 4,
> > .valid.min_access_size = 1,
> > .valid.max_access_size = 4,
> > - .endianness = DEVICE_LITTLE_ENDIAN,
> > + .endianness = DEVICE_NATIVE_ENDIAN,
> > };
> >
> > void acpi_pm_tmr_init(ACPIREGS *ar, acpi_update_sci_fn update_sci,
> > @@ -608,7 +608,7 @@ static const MemoryRegionOps acpi_pm_cnt_ops = {
> > .impl.min_access_size = 2,
> > .valid.min_access_size = 1,
> > .valid.max_access_size = 2,
> > - .endianness = DEVICE_LITTLE_ENDIAN,
> > + .endianness = DEVICE_NATIVE_ENDIAN,
> > };
> >
> > void acpi_pm1_cnt_init(ACPIREGS *ar, MemoryRegion *parent,
> > --
> > 2.30.2
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH] hw/acpi: Set memory regions to native endian as a work around,
Michael S. Tsirkin <=