lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8EA2C2C4116BF44AB370468FBF85A7770123AAB3A1@orsmsx504.amr.corp.intel.com>
Date:	Wed, 3 Feb 2010 21:01:32 -0800
From:	"Lu, Hongjiu" <hongjiu.lu@...el.com>
To:	Roland McGrath <roland@...hat.com>
CC:	"Siddha, Suresh B" <suresh.b.siddha@...el.com>,
	Oleg Nesterov <oleg@...hat.com>,
	"H. Peter Anvin" <hpa@...or.com>, Ingo Molnar <mingo@...e.hu>,
	Thomas Gleixner <tglx@...utronix.de>,
	LKML <linux-kernel@...r.kernel.org>,
	"Lachner, Peter" <peter.lachner@...el.com>
Subject: RE: [patch] x86: ptrace and core-dump extensions for xstate

> > To support XSAVE, gdb needs to know XCR0 as well as XSTATE size.
> > We can get those info from kernel via system call or cpuid. I
> > prefer cpuid over system call.
> 
> Suresh's patch puts this value in the xsave block, in what Suresh calls
> "sw_usable_bytes".  See the asm/ptrace-abi.h comment in the patch you
> signed off on.
>
> How is that not sufficient?  If it is indeed not sufficient to usefully
> interpret the xsave block, then how could an xsave block in a core dump
> file ever possibly be examined if it might not have been generated on the
> same system and kernel where the debugger is doing the examination?  If
> the NT_X86_XSTATE note as implemented in Suresh's patch is indeed not
> entirely self-contained in this way, then NAK on that new note format.
> 

I use it when reading core dump, which doesn't involve a system call.
I can analyze it on a totally different machine.

FWIW, there is the header file I have in gdb

---
/* XSAVE extended state information.  */

/* The extended state status.  */
enum xstate_status
{
  XSTATE_UNKNOWN = 0,
  XSTATE_UNSUPPORTED,
  XSTATE_INITIALIZED
};

/* The extended state feature bits.  */
#define bit_XSTATE_X87          (1ULL << 0)
#define bit_XSTATE_SSE          (1ULL << 1)
#define bit_XSTATE_AVX          (1ULL << 2)

/* Supported mask and size of the extended state.  Used for qSupport.  */
#define XSTATE_SSE_MASK         0x3
#define XSTATE_AVX_MASK         0x7
#define XSTATE_MAX_MASK         0x7

#define XSTATE_SSE_MASK_STRING  "0x3"
#define XSTATE_AVX_MASK_STRING  "0x7"
#define XSTATE_MAX_MASK_STRING  "0x7"

#define XSTATE_SSE_SIZE         576
#define XSTATE_AVX_SIZE         832
#define XSTATE_MAX_SIZE         832

#define XSTATE_SSE_SIZE_STRING  "576"
#define XSTATE_AVX_SIZE_STRING  "832"
#define XSTATE_MAX_SIZE_STRING  "832"

struct i386_xstate_type
  {
    /* The extended state status.  */
    enum xstate_status status;
    /* The extended control register 0 (the XFEATURE_ENABLED_MASK
       register).  */
    unsigned long long xcr0;
    /* The extended state size in bytes.  */
    unsigned int size;
    /* The extended state size in unit of int64.  We use array of
       int64 for better alignment.  */
    unsigned int n_of_int64;
  };

extern struct i386_xstate_type i386_xstate;

extern void i386_xstate_init (void);
---

I don't need a system call to tell me xcr0 and size. If you
really want, you can put it in glibc and doesn't involve kernel.
We can use __cpu_features for it.


H.J.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ