Re: [PATCH v1 2/2] s390/kvm: Move bitfields for dat tables

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 11 Jul 2024 17:16:23 +0200
Alexander Gordeev <agordeev@xxxxxxxxxxxxx> 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.




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux