[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240711182348.21ca02b2@p-imbrenda>
Date: Thu, 11 Jul 2024 18:23:48 +0200
From: Claudio Imbrenda <imbrenda@...ux.ibm.com>
To: Alexander Gordeev <agordeev@...ux.ibm.com>
Cc: linux-kernel@...r.kernel.org, kvm@...r.kernel.org,
linux-s390@...r.kernel.org, hca@...ux.ibm.com, svens@...ux.ibm.com,
gor@...ux.ibm.com, nrb@...ux.ibm.com, nsg@...ux.ibm.com,
seiden@...ux.ibm.com, frankja@...ux.ibm.com, borntraeger@...ibm.com,
gerald.schaefer@...ux.ibm.com, david@...hat.com
Subject: Re: [PATCH v1 2/2] s390/kvm: Move bitfields for dat tables
On Thu, 11 Jul 2024 17:16:23 +0200
Alexander Gordeev <agordeev@...ux.ibm.com> wrote:
> On Wed, Jul 03, 2024 at 05:59:00PM +0200, Claudio Imbrenda wrote:
>
> Hi Claudio,
>
> > Once in a separate header, the structs become available everywhere. One
> > possible usecase is to merge them in the s390
> > definitions, which is left as an exercise for the reader.
>
> Is my understanding correct that you potentially see page_table_entry::val /
> region?_table_entry.*::val / segment_table_entry.* merged with pte_t::pte /
> p?d_t::p?d?
>
> Thanks!
that depends on how you want to do the merge
you could do:
typedef union {
unsigned long pte;
union page_table_entry hw;
union page_table_entry_softbits sw;
} pte_t;
then you would have pte_t::pte and pte_t::hw::val; unfortunately it's
not possible to anonymously merge a named type..
this would be great but can't be done*:
typedef union {
unsigned long pte;
union page_table_entry;
} pte_t;
[*] gcc actually supports it with an additional feature switch, but
it's not standard C and I seriously doubt we should even think about
doing it
another possibility is a plain
typedef union page_table_entry pte_t;
and then fix pte_val() and similar, but then you won't have the
softbits.
in the end, it's up to you how you want to merge them. I will
have my own unions that I will use only inside KVM, that's enough for
me.
Powered by blists - more mailing lists